前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXXMLDocumentType
[XML] DocumentType ノードを表すクラスです。
#include <SFXXMLDocumentType.hpp>
class SFXXMLDocumentType : public SFXXMLNode;
SFMTYPEDEFCLASS(SFXXMLDocumentType)

継承図

SFXXMLDocumentType クラスの継承図

協調図

SFXXMLDocumentType クラスの協調図

解説

DocumentType ノード(SFXXMLDocumentType)は、 XML 文書の文書型を保持します。

[Note] 注意

DocumentType ノードは SFXXMLDocument::SetDocumentType などの関数を使用して Document ノード(SFXXMLDocument)に関連付けます。

Document ノードは、DocumentType ノードを値とする _docType 属性を備えています。

[Note] システム識別子(System Identifier)と公開識別子(Public Identifier)

システム識別子(System Identifier)とは、 外部サブセットの位置を示すもので、URIで表現されます。 XML プロセッサは、この位置情報から外部サブセットを入手します。

公開識別子(Public Identifier)とは、 XML プロセッサが識別できる、特定の外部サブセットを表す文字列のことです。 認識できない場合のために、公開識別子の後ろにシステム識別子を指定することも可能です。 具体的には、 PUBLIC "公開識別子" "システム識別子" のように指定します。

例えば、以下の例では、"-//W3C//DTD HTML4.0 Transitional//EN" が公開識別子で、 "http://www.w3.org/TR/REC-html40/loose.dtd" がシステム識別子です。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

参照

SFXXMLNode | SFXXMLDocument

メンバ

コンストラクタ/デストラクタ
SFXXMLDocumentType( SFXXMLDocumentPtr owner , SFXAnsiStringConstRef name , SFXAnsiStringConstRef publicId , SFXAnsiStringConstRef systemId )
SFXXMLDocumentType クラスのコンストラクタです。
SFXXMLDocumentType( SFXXMLDocumentTypeConstRef other , Bool deep = false )
SFXXMLDocumentType クラスのコンストラクタです。
~SFXXMLDocumentType( Void )
SFXXMLDocumentType クラスのデストラクタです。
パブリック関数
SFCError CloneNode( SFXXMLNodeHandle clonenode , Bool deep )
ノードのコピーを作成します。
Bool EqualNode( SFXXMLNodeConstPtr arg )
指定したノードと同等かどうかを判定します。
DOMNamedNodeMapPtr GetEntities( Void )
Entity ノードをすべて取得します。
ACharConstPtr GetInternalSubset( Void )
内部サブセットを取得します。
ACharConstPtr GetName( Void )
ノードの名前(nodeName 属性値)を取得します。
SFXXMLNodePtr GetNextSibling( Void )
次の兄弟ノードを取得します。
ACharConstPtr GetNodeName( Void )
ノードの名前(nodeName 属性値)を取得します。
NodeType GetNodeType( Void )
ノードタイプ(nodeType 属性値)を取得します。
DOMNamedNodeMapPtr GetNotations( Void )
Notation ノードをすべて取得します。
SFXXMLNodePtr GetParentNode( Void )
親ノードを取得します。
SFXXMLNodePtr GetPreviousSibling( Void )
前の兄弟ノードを取得します。
ACharConstPtr GetPublicID( Void )
外部サブセットの公開識別子を取得します。
ACharConstPtr GetSystemID( Void )
外部サブセットのシステム識別子を取得します。
Void SetInternalSubset( SFXAnsiStringConstRef intsubset )
内部サブセットを設定します。
SFCError AppendChild( SFXXMLNodeConstPtr newchild ) (SFXXMLNode から継承)
【無効】子ノードの最後にノードを追加します。
DOMNodeListPtr GetChildNodes( Void ) (SFXXMLNode から継承)
【無効】すべての子ノードを取得します。
SFXXMLNodePtr GetFirstChild( Void ) (SFXXMLNode から継承)
【無効】最初の子ノードを取得します。
SFXXMLNodePtr GetLastChild( Void ) (SFXXMLNode から継承)
【無効】最後の子ノードを取得します。
ACharConstPtr GetNodeValue( Void ) (SFXXMLNode から継承)
ノードの値(nodeValue 属性値)を取得します。
SFXAnsiString GetText( Void ) (SFXXMLNode から継承)
ノードテキストを取得します。
Bool HasChildNodes( Void ) (SFXXMLNode から継承)
【無効】子ノードを持つかどうかを判定します。
SFCError InsertBefore( SFXXMLNodeConstPtr newchild , SFXXMLNodeConstPtr refchild ) (SFXXMLNode から継承)
【無効】ノードを挿入します。
Bool IsSameNode( SFXXMLNodeConstPtr other ) (SFXXMLNode から継承)
指定されたノードと同一であるか判定します。
SFCError RemoveChild( SFXXMLNodeConstPtr oldchild ) (SFXXMLNode から継承)
【無効】子孫ノードも含めて子ノードを削除します。
SFCError ReplaceChild( SFXXMLNodeConstPtr newchild , SFXXMLNodeConstPtr oldchild ) (SFXXMLNode から継承)
【無効】子ノードを置換します。
Void SetNodeValue( ACharConstPtr value ) (SFXXMLNode から継承)
ノードの値(nodeValue 属性値)を設定します。
SFCError SetText( SFXAnsiStringConstRef text ) (SFXXMLNode から継承)
ノードテキストを設定します。
DOMNamedNodeMap (SFXXMLNode から継承)
複数の DOM ノードを名前またはローカル名と名前空間 URI で管理するためのクラスです。
DOMNodeList (SFXXMLNode から継承)
複数の DOM ノードをリスト形式で管理するためのクラスです。
NodeType (SFXXMLNode から継承)
ノードタイプを表す定数です。

SFXXMLDocumentType::SFXXMLDocumentType
SFXXMLDocumentType クラスのコンストラクタです。
[ public, explicit ]
SFXXMLDocumentType(
    SFXXMLDocumentPtr owner          // ドキュメントツリーのルート
    SFXAnsiStringConstRef name       // 文書型名
    SFXAnsiStringConstRef publicId   // 外部サブセットの公開識別子 
    SFXAnsiStringConstRef systemId   // 外部サブセットのシステム識別子 
);
[ public, explicit ]
SFXXMLDocumentType(
    SFXXMLDocumentTypeConstRef other   // DocumentType ノード
    Bool deep = false                  // 子ノードを再帰的にコピーするかどうか
);

解説

このコンストラクタは、指定された値をこのノードに設定します。

引数には、このノードを所有するドキュメントツリーのルート(SFXXMLDocument)・ 文書型名・外部サブセットの公開識別子とシステム識別子、 または別の DocumentType ノードのいずれかを指定することが可能です。

[Note] 注意

name 引数に指定した文書型名は、 SFXXMLDocumentType::GetNodeName 関数で取得できる、 このノードの nodeName 属性として設定されます。

publicId 引数に指定した外部サブセットの公開識別子は、 SFXXMLDocumentType::GetPublicID 関数で取得できます。

systemId 引数に指定した外部サブセットのシステム識別子は、 SFXXMLDocumentType::GetSystemID 関数で取得できます。

[Note] システム識別子(System Identifier)と公開識別子(Public Identifier)

システム識別子(System Identifier)とは、 外部サブセットの位置を示すもので、URIで表現されます。 XML プロセッサは、この位置情報から外部サブセットを入手します。

公開識別子(Public Identifier)とは、 XML プロセッサが識別できる、特定の外部サブセットを表す文字列のことです。 認識できない場合のために、公開識別子の後ろにシステム識別子を指定することも可能です。 具体的には、 PUBLIC "公開識別子" "システム識別子" のように指定します。

例えば、以下の例では、"-//W3C//DTD HTML4.0 Transitional//EN" が公開識別子で、 "http://www.w3.org/TR/REC-html40/loose.dtd" がシステム識別子です。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

参照

SFXXMLDocumentType::GetNodeName | SFXXMLDocumentType::GetPublicID | SFXXMLDocumentType::GetSystemID | SFXXMLDocument


SFXXMLDocumentType::~SFXXMLDocumentType
SFXXMLDocumentType クラスのデストラクタです。
[ public, virtual ]
virtual ~SFXXMLDocumentType(Void);

解説

このデストラクタは、何も行いません。


SFXXMLDocumentType::CloneNode
ノードのコピーを作成します。
[ public, virtual ]
SFCError CloneNode(
    SFXXMLNodeHandle clonenode   // コピー先のノード(Handle 型)
    Bool deep                    // 子ノードを再帰的にコピーするかどうか【無効】
);

引数

clonenode

コピー先ノードを指定します。

deep

この引数は無効です。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 失敗したとき: SFERR_FAILED

解説

この関数は、このノードのコピーを作成し、clonenode 引数に返します。

[Note] 注意

DocumentType ノードは子ノードを持たないので、 deep 引数は無効です。true を指定しても、false を指定しても結果は同じです。

参照

SFXXMLDocumentType::SFXXMLDocumentType | SFXXMLNode::CloneNode | SFXXMLNode


SFXXMLDocumentType::EqualNode
指定したノードと同等かどうかを判定します。
[ public, virtual, const ]
Bool EqualNode(
    SFXXMLNodeConstPtr arg   // 同等性を比較する対象のノード 
);

戻り値

  • 同等であるとき: true
  • そうでないとき: false

解説

この関数は、指定されたノードと同等かどうか(ノードの内容が同じであるかどうか)を判定します。

[Note] 2 つのノードが同等であるための条件

2 つのノードが同等であるための条件は、以下のように再帰的に定義されます。

  1. 2 つのノードが同じであること(SFXXMLNode::IsSameNode 関数の戻り値が true であるとき)
  2. 2 つのノードが同じでない(異なる)場合は、以下の条件をすべて満足すること
    • ノードタイプ(nodeType 属性値)が同じであること
    • ノードの名前(nodeName 属性値)が同じであること
    • ノードの値(nodeValue 属性値)が同じであること
    • (子ノードが存在するなら)子ノードの数が同じであり、かつ同じ位置にある子ノード同士が同等であること
  3. DocumentType ノードの場合は、 設定されている外部サブセットの公開識別子とシステム識別子、 内部サブセット、記法、エンティティも同じであること
[Note] 2 つのノードの同一性の判定

2 つのノードが同一であるかどうか(2 つのノードが同じオブジェクトを参照しているかどうか)の判定には、 SFXXMLNode::IsSameNode 関数を使用します。

参照

SFXXMLNode::EqualNode | SFXXMLNode


SFXXMLDocumentType::GetEntities
Entity ノードをすべて取得します。
[ public, const ]
DOMNamedNodeMapPtr GetEntities(Void);

戻り値

この DocumentType ノードに設定されている、 すべての Entity ノードの NamedNodeMap(SFXXMLNode::DOMNamedNodeMap へのポインタ)

解説

この関数は、この DocumentType ノードに設定されている、すべての Entity ノードを取得します。

Entity ノードが設定されていない場合は、null を返します。

[Note] 注意

この関数は、XML文書の DTD で宣言されている、すべてのエンティティを取得します。

使用例

<?xml version="1.0" encoding="shift_JIS" standalone="yes" ?>
<!DOCTYPE 名簿[
<!ELEMENT 名簿 (名前,メールアドレス)>
<!ENTITY Account "sophia">
<!ENTITY Email "&Account;@s-cradle.com">
<!ELEMENT 名前 "(#PCDATA)">
<!ELEMENT メールアドレス "(#PCDATA)">
<!ATTLIST 名前 番号 (001|002|003) #REQUIRED>
]>
<名簿>
   <名前 番号="001">Sophia Cradle</名前>
  <メールアドレス>&Email;</メールアドレス>
</名簿> 

// ルートノードから DocumentType ノードを取得する
SFXXMLDocumentTypePtr docType = root->GetDocumentType();
if (docType) {
    // DOM ツリー内のすべての Entity ノードを取得する
    SFXXMLNode::DOMNamedNodeMapPtr nodemap = docType->GetEntities();
    if (nodemap) {
        // "Name" Entiry ノードを取得する
        SFXXMLEntityPtr name = SFXXMLEntityPtr(nodemap->Item(0));
        // "Email" Entiry ノードを取得する
        SFXXMLEntityPtr mail = SFXXMLEntityPtr(nodemap->Item(1));
        ....
        
        // 新しい Entiry ノードを追加する "<!ENTITY 会社 SYSTEM "company.dtd">"
        SFXXMLEntityPtr entity = document.CreateEntity("会社");
        entity->SetSystemID("company.dtd");
        nodemap->SetNamedItem(entity);
    }
}

参照

SFXXMLNode::DOMNamedNodeMap | SFXXMLDocument::CreateEntity | SFXXMLEntity | SFXXMLNode


SFXXMLDocumentType::GetInternalSubset
内部サブセットを取得します。
[ public, const ]
ACharConstPtr GetInternalSubset(Void);

戻り値

内部サブセットの内容(設定されていない場合は null)

解説

この関数は、このノードに内部サブセットの内容を取得します。

区切り用の角括弧("[" と "]")は、含まれません。

内部サブセットが設定されていない場合は、null を返します。

内部サブセットは、 SFXXMLDocumentType::SetInternalSubset 関数で設定します。

[Note] 内部サブセット

内部サブセット(Internal Subset)とは、 XML 文書内に DTD を定義する方法のことです。

逆に、DTD を定義した DTD ファイルを作成し、 XML 文書内から、DTD ファイルの位置を指定する方法を外部サブセット(External Subset)と呼びます。

参照

SFXXMLDocumentType::SetInternalSubset | SFXXMLDocumentType::GetPublicID | SFXXMLDocumentType::GetSystemID | SFXXMLDocumentType::SFXXMLDocumentType


SFXXMLDocumentType::GetName
ノードの名前(nodeName 属性値)を取得します。
[ public, const ]
ACharConstPtr GetName(Void);

戻り値

ノードの名前(nodeName 属性値)

解説

この関数は、このノードの名前(nodeName 属性値)を取得します。

DocumentType ノードの場合、nodeName 属性値は文書型名のことです。

[Note] 注意

文書型名は、SFXXMLDocumentType::SFXXMLDocumentType コンストラクタの name 引数で設定します。

[Note] 注意

SFXXMLDocumentType::GetNodeName 関数を呼び出すのと同等です。

参照

SFXXMLDocumentType::GetNodeName | SFXXMLDocumentType::SFXXMLDocumentType


SFXXMLDocumentType::GetNextSibling
次の兄弟ノードを取得します。
[ public, virtual, const ]
SFXXMLNodePtr GetNextSibling(Void);

戻り値

次の兄弟ノード

解説

この関数は、このノードの次の兄弟ノードを取得します。

[Note] 注意

次の兄弟ノードが存在しない場合は null を返します。

参照

SFXXMLDocumentType::GetPreviousSibling | SFXXMLNode::GetNextSibling | SFXXMLNode::GetPreviousSibling | SFXXMLNode


SFXXMLDocumentType::GetNodeName
ノードの名前(nodeName 属性値)を取得します。
[ public, virtual, const ]
ACharConstPtr GetNodeName(Void);

戻り値

ノードの名前(nodeName 属性値)

解説

この関数は、このノードの名前(nodeName 属性値)を取得します。

DocumentType ノードの場合、nodeName 属性値は文書型名のことです。

[Note] 注意

文書型名は、SFXXMLDocumentType::SFXXMLDocumentType コンストラクタの name 引数で設定します。

[Note] 注意

SFXXMLDocumentType::GetName 関数を呼び出すのと同等です。

参照

SFXXMLDocumentType::SFXXMLDocumentType | SFXXMLNode::GetNodeName | SFXXMLNode


SFXXMLDocumentType::GetNodeType
ノードタイプ(nodeType 属性値)を取得します。
[ public, virtual, const ]
NodeType GetNodeType(Void);

戻り値

SFXXMLNode::DOCUMENT_TYPE_NODE

解説

この関数は、このノードのタイプ(nodeType 属性値)を取得します。

DocumentType ノードの場合、nodeType 属性値は SFXXMLNode::DOCUMENT_TYPE_NODE です。

参照

SFXXMLNode::NodeType | SFXXMLNode::GetNodeType | SFXXMLNode


SFXXMLDocumentType::GetNotations
Notation ノードをすべて取得します。
[ public, const ]
DOMNamedNodeMapPtr GetNotations(Void);

戻り値

この DocumentType ノードに設定されている、すべての Notation ノードの NamedNodeMap(SFXXMLNode::DOMNamedNodeMap へのポインタ)

解説

この関数は、この DocumentType ノードに設定されている、すべての Notation ノードを取得します。

Notation ノードが設定されていない場合は null を返します。

[Note] 注意

この関数は、XML文書の DTD で宣言されている、すべての記法を取得します。

使用例

<?xml version="1.0" encoding="shift_JIS" standalone="yes" ?>
<!DOCTYPE スタジオ [
<!ELEMENT スタジオ ANY>
<!ELEMENT マルチメディア (#PCDATA)>
<!ATTLIST マルチメディア player NOTATION (rm|gif|midi) #REQUIRED>
<!NOTATION gif SYSTEM "Image/gif">
<!NOTATION rm SYSTEM "RealPlayer.exe">
<!NOTATION midi SYSTEM "wmplayer.exe">
]>
<スタジオ>
   <マルチメディア player="rm"></マルチメディア>
</スタジオ>

// ルートノードから DocumentType ノードを取得する
SFXXMLDocumentTypePtr docType = root->GetDocumentType();
if (docType) {
    // Notation ノードをすべて取得する
    SFXXMLNode::DOMNamedNodeMapPtr nodemap = docType->GetNotations();
    if (nodemap) {
        // gif 表記法(Notation ノード)を取得する
        SFXXMLNotationPtr gif = SFXXMLNotationPtr(nodemap->Item(0));
        // rm 表記法(Notation ノード)を取得する
        SFXXMLNotationPtr rm = SFXXMLNotationPtr(nodemap->Item(1));
        // midi 表記法(Notation ノード)を取得する
        SFXXMLNotationPtr midi = SFXXMLNotationPtr(nodemap->Item(2));
        ....
            
        // 新しい表記法(Notation ノード)追加する "<!NOTATION mp3 SYSTEM "winamp.exe">"
        SFXXMLNotationPtr mp3 = document.CreateNotation("mp3");
        mp3->SetSystemID("winamp.exe");
        nodemap->SetNamedItem(mp3);
    }
}

参照

SFXXMLNode::DOMNamedNodeMap | SFXXMLDocument::CreateNotation | SFXXMLNotation | SFXXMLNode


SFXXMLDocumentType::GetParentNode
親ノードを取得します。
[ public, virtual, const ]
SFXXMLNodePtr GetParentNode(Void);

戻り値

親ノード

解説

この関数は、このノードの親ノードを取得します。

[Note] 注意

親ノードが存在しない場合は null を返します。

参照

SFXXMLNode::GetParentNode | SFXXMLNode


SFXXMLDocumentType::GetPreviousSibling
前の兄弟ノードを取得します。
[ public, virtual, const ]
SFXXMLNodePtr GetPreviousSibling(Void);

戻り値

前の兄弟ノード

解説

この関数は、このノードの前の兄弟ノードを取得します。

[Note] 注意

前の兄弟ノードが存在しない場合は null を返します。

参照

SFXXMLDocumentType::GetNextSibling | SFXXMLNode::GetPreviousSibling | SFXXMLNode::GetNextSibling | SFXXMLNode


SFXXMLDocumentType::GetPublicID
外部サブセットの公開識別子を取得します。
[ public, const ]
ACharConstPtr GetPublicID(Void);

戻り値

外部サブセットの公開識別子

解説

この関数は、このノードに設定された外部サブセットの公開識別子を取得します。

外部サブセットの公開識別子は、SFXXMLDocumentType::SFXXMLDocumentType コンストラクタで設定します。

[Note] 外部サブセットの公開識別子

外部サブセットの公開識別子(Public Identifier)とは、 特定の外部サブセットを表す識別子として、公に知られている文字列のことで、 必ずしも URI で表現されるとは限りません。 例えば、XHTML を表す公開識別子は "-//W3C//DTD XHTML 1.1//EN" です。

外部サブセットのシステム識別子(System Identifier)とは、 外部サブセットの位置を示すもので、URIで表現されます。

XML パーサは、この位置情報から外部サブセットを入手します。

参照

SFXXMLDocumentType::SFXXMLDocumentType | SFXXMLDocumentType::GetSystemID | SFXXMLDocumentType::GetInternalSubset


SFXXMLDocumentType::GetSystemID
外部サブセットのシステム識別子を取得します。
[ public, const ]
ACharConstPtr GetSystemID(Void);

戻り値

外部サブセットのシステム識別子

解説

この関数は、このノードに設定された外部サブセットのシステム識別子を取得します。

外部サブセットのシステム識別子は、SFXXMLDocumentType::SFXXMLDocumentType コンストラクタで設定します。

[Note] 外部サブセットのシステム識別子

外部サブセットのシステム識別子(System Identifier)とは、 外部サブセットの位置を示すもので、URIで表現されます。

XML パーサは、この位置情報から外部サブセットを入手します。

外部サブセットの公開識別子(Public Identifier)とは、 特定の外部サブセットを表す識別子として、公に知られている文字列のことで、 必ずしも URI で表現されるとは限りません。 例えば、XHTML を表す公開識別子は "-//W3C//DTD XHTML 1.1//EN" です。

参照

SFXXMLDocumentType::SFXXMLDocumentType | SFXXMLDocumentType::GetPublicID | SFXXMLDocumentType::GetInternalSubset


SFXXMLDocumentType::SetInternalSubset
内部サブセットを設定します。
[ public ]
Void SetInternalSubset(
    SFXAnsiStringConstRef intsubset   // 設定する内部サブセット 
);

解説

この関数は、このノードに内部サブセットの内容を設定します。

区切り用の角括弧("[" と "]")は、含まれません。

[Note] 内部サブセット

内部サブセット(Internal Subset)とは、 XML 文書内に DTD を定義する方法のことです。

逆に、DTD を定義した DTD ファイルを作成し、 XML 文書内から、DTD ファイルの位置を指定する方法を外部サブセット(External Subset)と呼びます。

参照

SFXXMLDocumentType::GetInternalSubset | SFXXMLDocumentType::GetPublicID | SFXXMLDocumentType::GetSystemID | SFXXMLDocumentType::SFXXMLDocumentType