前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXXMLDOMParser
[XML] DOM 方式で XML 文書を解析するためのクラスです。
#include <SFXXMLDOMParser.hpp>
class SFXXMLDOMParser : public static_exception< SFCError >;
SFMTYPEDEFCLASS(SFXXMLDOMParser)

継承図

SFXXMLDOMParser クラスの継承図

協調図

SFXXMLDOMParser クラスの協調図

解説

DOM パーサー(SFXXMLDOMParser)は、 XML 文書をデータの順序に関係なくアクセスできる「 DOM ツリー 」と呼ばれるツリー構造に変換します。

[Caution] 仕様上の制約

解析の対象となるファイルは、携帯端末のローカルファイルである必要があります(サーバーのファイルを直接指定することはできません)。

エンティティ参照については、エンティティの実体に置き換えられません。

[Note] DOM(Document Object Model)の仕様

W3C DOM レベル 3 コア仕様 : Document Object Model (DOM) Level 3 Core Specification

例 859. DOM パーサー を使用して XML 文書を解析する方法

// 解析対象の XML 文書 ( file.xml )
<fruit>
    <name language="english" code="ascii">apple</name>
    <size>XS</size>
    <color>red</color>
</fruit>

SFCError error;             // エラー値
SFXXMLDOMParser parser;     // DOM パーサー
SFXAnsiString resultString; // 属性値を一時的に格納するための変数

// file.xml に保存した XML 文書を解析する
if ((error = parser.Parse(SFXPath("/file.xml"))) == SFERR_NO_ERROR) {

    // DOM ツリーのルートノードを取得する
    SFXXMLDocumentPtr root = parser.GetDocument(); 

    // DOM ツリーのルートノードの最初の子ノード ( XML 文書のルート要素: "fruit" 要素 ) を取得する
    SFXXMLNodePtr child = root->GetFirstChild();  
    
    // "fruit" 要素の最初の子ノード ( "name" 要素 ) を取得する
    child = child->GetFirstChild();   

    // child ノードの名前(要素名)が "name" のとき
    if (SFXAnsiString("name").Equals(child->GetNodeName())) {

        // 属性を取得するために Element ノードにキャストする
        SFXXMLElementPtr element = static_cast<SFXXMLElementPtr>(child);

        // "language" という名前(属性名)の Attribute ノードの値を取得する
        // resultString は "english" になる
        resultString = element->GetAttribute("language");

        // 名前(属性名)が "language" である Attribute ノードを取得する
        SFXXMLAttributePtr attr = element->GetAttributeNode("language");
        
        // Attribute ノードの値(属性値)を取得する
        resultString = attr->GetNodeValue();
        
        // すべての Attribute ノードを取得する
        SFXXMLNode::DOMNamedNodeMapPtr nodeMap = element->GetAttributes();

        // "code"という名前(属性名)の Attribute ノードを取得する
        attr = static_cast<SFXXMLAttributePtr>(nodeMap->GetNamedItem("code"));

        // Attribute ノードの値(属性値)を取得する
        resultString = attr->GetNodeValue();
    }
}

参照

SFXXMLSAXParser | SFXXMLDefaultHandler

メンバ

コンストラクタ/デストラクタ
SFXXMLDOMParser( Void )
SFXXMLDOMParser クラスのコンストラクタです。
~SFXXMLDOMParser( Void )
SFXXMLDOMParser クラスのデストラクタです。
パブリック関数
Bool GetCreateCommentNodes( Void )
Comment ノードを生成するかどうかのフラグ値(Comment ノード生成フラグ値)を取得します。
Bool GetDoIndent( Void )
インデント処理するかどうかのフラグ値(インデント処理フラグ値)を取得します。
Bool GetDoNamespaces( Void )
名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を取得します。
Bool GetDoSchema( Void )
XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を取得します。
SFXXMLDocumentPtr GetDocument( Void )
Document ノードを取得します。
ACharConstPtr GetErrorInfo( Void )
XML 文書解析中に発生したエラーメッセージを取得します。
static
SFXXMLElementPtr
GetFirstChildElement( SFXXMLNodeConstPtr parent )
指定されたノードの最初の子 Element ノードを取得します。
static
SFXXMLElementPtr
GetFirstChildElementNS( SFXXMLNodeConstPtr parent , SFXAnsiStringHandleConst elemNames , SFXAnsiStringConstRef uri , SInt32 length )
指定されたノードの最初の子 Element ノードを取得します。その Element ノードは、指定された名前空間 URI および要素のローカル名(複数指定可能)と一致する必要があります。
Bool GetIgnoreAnnotations( Void )
【無効】XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を取得します。
Bool GetLoadExternalDTD( Void )
外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を取得します。
static
SFXXMLElementPtr
GetNextSiblingElement( SFXXMLNodeConstPtr node )
指定されたノードの次の兄弟 Element ノードを取得します。
static
SFXXMLElementPtr
GetNextSiblingElementNS( SFXXMLNodeConstPtr node , SFXAnsiStringHandleConst elemNames , SFXAnsiStringConstRef uri , SInt32 length )
指定されたノードの次の兄弟 Element ノードを取得します。その Element ノードは、指定された名前空間 URI および要素のローカル名(複数指定可能)と一致する必要があります。
Bool GetStandalone( Void )
XML 文書の Standalone 宣言の内容を取得します。
Bool GetValidationDTD( Void )
XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を取得します。
Bool GetValidationSchema( Void )
XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を取得します。
SFCError Parse( SFBFileSmpConstRef source )
XML 文書を読み込み、DOM パーサーを使用して解析します。
SFCError Parse( SFXAnsiStringConstRef source )
XML 文書を読み込み、DOM パーサーを使用して解析します。
SFCError Parse( SFXPathConstRef source )
XML 文書を読み込み、DOM パーサーを使用して解析します。
SFCError Parse( SFXStreamReaderConstRef source )
XML 文書を読み込み、DOM パーサーを使用して解析します。
Void Reset( Void )
すべての内部変数をリセットします。
Void SetCreateCommentNodes( BoolConst create )
Comment ノードを生成するかどうかのフラグ値(Comment ノード生成フラグ値)を設定します。
Void SetDoIndent( BoolConst state )
インデント処理するかどうかのフラグ値(インデント処理フラグ値)を設定します。
Void SetDoNamespaces( BoolConst state )
名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を設定します。
Void SetDoSchema( BoolConst state )
XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を設定します。
Void SetGrammar( SFXXMLGrammar::GrammarType grammar )
XML 文書の記述内容を規定する文法(言語)を設定します。
Void SetIgnoreAnnotations( BoolConst state )
【無効】XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を設定します。
Void SetLoadExternalDTD( BoolConst state )
外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を設定します。
Void SetSchemaLocation( SFXAnsiStringConstRef name )
XML 文書を検証するための XSD ファイルを設定します。
Void SetValidationDTD( BoolConst state )
XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を設定します。
Void SetValidationSchema( BoolConst state )
XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を設定します。

SFXXMLDOMParser::SFXXMLDOMParser
SFXXMLDOMParser クラスのコンストラクタです。
[ public, explicit ]
SFXXMLDOMParser(Void);

解説

このコンストラクタは、この XML パーサーの各種初期設定を行います。


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

解説

この関数は、この XML パーサーが使用している、 すべての内部変数をリセットします。

[Note] 注意

内部的に SFXXMLDOMParser::Reset 関数を呼び出します。

参照

SFXXMLDOMParser::Reset


SFXXMLDOMParser::GetCreateCommentNodes
Comment ノードを生成するかどうかのフラグ値(Comment ノード生成フラグ値)を取得します。
[ public, const ]
Bool GetCreateCommentNodes(Void);

戻り値

Comment ノード生成フラグ値

解説

この関数は、Comment ノードを生成するかどうかのフラグ値(Comment ノード生成フラグ値)を取得します。

参照

SFXXMLDOMParser::SetCreateCommentNodes


SFXXMLDOMParser::GetDoIndent
インデント処理するかどうかのフラグ値(インデント処理フラグ値)を取得します。
[ public, const ]
Bool GetDoIndent(Void);

戻り値

インデント処理フラグ値

解説

この関数は、インデント処理するかどうかのフラグ値(インデント処理フラグ値)を取得します。

[Note] 注意

このフラグを ON(true)に設定すると、 XML 文書を処理するときに、 XML プロローグ、ルート要素、コメントと CDATA セクションの内部を除く各行について、 先頭タグの前と前行の末尾の空白部分をテキストとするインデント用 Text のノードが挿入されます。

参照

SFXXMLDOMParser::SetDoIndent


SFXXMLDOMParser::GetDoNamespaces
名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を取得します。
[ public, const ]
Bool GetDoNamespaces(Void);

戻り値

名前空間処理フラグ値

解説

この関数は、名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を取得します。

[Note] 注意

このフラグを ON(true)に設定すると、 このパーサーで DOM ツリーを構築するときに、 Element と Attribute の各ノードに名前空間 URI が設定されます。

そして、Element ノードと Attribute ノードには、 末尾が NS である名前の関数で名前空間 URI とローカル名を指定してアクセスすることが可能になります。

参照

SFXXMLDOMParser::SetDoNamespaces


SFXXMLDOMParser::GetDoSchema
XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を取得します。
[ public, const ]
Bool GetDoSchema(Void);

戻り値

スキーマ処理フラグ値

解説

この関数は、この XML パーサーが XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を取得します。

参照

SFXXMLDOMParser::SetDoSchema


SFXXMLDOMParser::GetDocument
Document ノードを取得します。
[ public, const ]
SFXXMLDocumentPtr GetDocument(Void);

戻り値

Document ノード

解説

この関数は、SFXXMLDOMParser::Parse 関数による XML 文書解析後の DOM ツリーのルートである、 Document ノードを取得します。

[Note] 注意

Document ノードは DOM ツリーのルートノードです。

参照

SFXXMLDOMParser::Parse


SFXXMLDOMParser::GetErrorInfo
XML 文書解析中に発生したエラーメッセージを取得します。
[ public, const ]
ACharConstPtr GetErrorInfo(Void);

戻り値

XML 文書解析中に発生したエラーメッセージ

解説

この関数は、XML 文書解析中に発生したエラーメッセージを取得します。

[Note] 注意

エラー値は、static_exception::static_catch 関数により取得できます。

参照

static_exception::static_catch


SFXXMLDOMParser::GetFirstChildElement
指定されたノードの最初の子 Element ノードを取得します。
[ public, static ]
SFXXMLElementPtr GetFirstChildElement(
    SFXXMLNodeConstPtr parent   // 親ノード 
);

参照

SFXXMLDOMParser::GetFirstChildElementNS | SFXXMLDOMParser::GetNextSiblingElement | SFXXMLDOMParser::GetNextSiblingElementNS


SFXXMLDOMParser::GetFirstChildElementNS
指定されたノードの最初の子 Element ノードを取得します。その Element ノードは、指定された名前空間 URI および要素のローカル名(複数指定可能)と一致する必要があります。
[ public, static ]
SFXXMLElementPtr GetFirstChildElementNS(
    SFXXMLNodeConstPtr parent            // 親ノード 
    SFXAnsiStringHandleConst elemNames   // 要素のローカル名のハンドル(Handle 型)  
    SFXAnsiStringConstRef uri            // 名前空間 URI 
    SInt32 length                        // 要素のローカル名の個数 
);

解説

[Note] 注意
引数で指定する、名前空間 URI、および要素のローカル名(複数指定可能)と一致する必要があります。

参照

SFXXMLDOMParser::GetFirstChildElement | SFXXMLDOMParser::GetNextSiblingElement | SFXXMLDOMParser::GetNextSiblingElementNS


SFXXMLDOMParser::GetIgnoreAnnotations
【無効】XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を取得します。
[ public, const ]
Bool GetIgnoreAnnotations(Void);

戻り値

Annotation 要素検証無効フラグ値

解説

この関数は、XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を取得します。

[Caution] 注意

現バージョンでは、Annotation 要素検証無効フラグ値を OFF にしても検証は行われません(このフラグは無効です)。

参照

SFXXMLDOMParser::SetIgnoreAnnotations


SFXXMLDOMParser::GetLoadExternalDTD
外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を取得します。
[ public, const ]
Bool GetLoadExternalDTD(Void);

戻り値

外部 DTD 読み込みフラグ値

解説

この関数は、この XML パーサーが XML 文書内に指定された、 外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を取得します。

参照

SFXXMLDOMParser::SetLoadExternalDTD


SFXXMLDOMParser::GetNextSiblingElement
指定されたノードの次の兄弟 Element ノードを取得します。
[ public, static ]
SFXXMLElementPtr GetNextSiblingElement(
    SFXXMLNodeConstPtr node   // ノード 
);

参照

SFXXMLDOMParser::GetNextSiblingElementNS | SFXXMLDOMParser::GetFirstChildElement | SFXXMLDOMParser::GetFirstChildElementNS


SFXXMLDOMParser::GetNextSiblingElementNS
指定されたノードの次の兄弟 Element ノードを取得します。その Element ノードは、指定された名前空間 URI および要素のローカル名(複数指定可能)と一致する必要があります。
[ public, static ]
SFXXMLElementPtr GetNextSiblingElementNS(
    SFXXMLNodeConstPtr node              // 親ノード 
    SFXAnsiStringHandleConst elemNames   // 要素のローカル名のハンドル(Handle 型)
    SFXAnsiStringConstRef uri            // 名前空間 URI 
    SInt32 length                        // 要素のローカル名の個数 
);

解説

[Note] 注意
引数で指定する、名前空間 URI、および要素のローカル名(複数指定可能)と一致する必要があります。

参照

SFXXMLDOMParser::GetNextSiblingElement | SFXXMLDOMParser::GetFirstChildElement | SFXXMLDOMParser::GetFirstChildElementNS


SFXXMLDOMParser::GetStandalone
XML 文書の Standalone 宣言の内容を取得します。
[ public, const ]
Bool GetStandalone(Void);

戻り値

XML 文書の Standalone 宣言の内容

解説

この関数は、XML 文書の Standalone 宣言の内容を取得します。


SFXXMLDOMParser::GetValidationDTD
XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を取得します。
[ public, const ]
Bool GetValidationDTD(Void);

戻り値

DTD 検証フラグ値

解説

この関数は、この XML パーサーが XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を取得します。

参照

SFXXMLDOMParser::SetValidationDTD


SFXXMLDOMParser::GetValidationSchema
XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を取得します。
[ public, const ]
Bool GetValidationSchema(Void);

戻り値

スキーマ検証フラグ値

解説

この関数は、この XML パーサーが XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を取得します。

参照

SFXXMLDOMParser::SetValidationSchema


SFXXMLDOMParser::Parse
XML 文書を読み込み、DOM パーサーを使用して解析します。
[ public ]
SFCError Parse(
    SFBFileSmpConstRef source   // XML 文書(ファイル)
);
[ public ]
SFCError Parse(
    SFXAnsiStringConstRef source   // XML 文書(文字列)
);
[ public ]
SFCError Parse(
    SFXPathConstRef source   // XML 文書(パス)
);
[ public ]
SFCError Parse(
    SFXStreamReaderConstRef source   // XML 文書(ストリーム)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • パスが不正であるとき、または引数が null のとき: SFERR_INVALID_PARAM
  • 解析するファイルが既に開いているとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 失敗したとき: SFERR_FAILED

XML 文書の解析後、 static_exception::static_catch 関数により取得できる、その他のエラー値は以下の通りです。

  • version 宣言の XML のバージョンに誤りがあるとき: SFERR_XML_BAD_VERSION( 0x6901 )
  • encoding 宣言のエンコーディングに誤りがあるとき: SFERR_XML_BAD_ENCODING( 0x6902 )
  • standalone 文書宣言で指定した値に誤りがあるとき: SFERR_XML_BAD_STANDALONE( 0x6903 )
  • "<!--"、"-->"、"<[["、"]]>"などの文字列に誤りがあるとき: SFERR_XML_BAD_SEQUENCE( 0x6904 )
  • 属性のデフォルトの型に誤りがあるとき: SFERR_XML_BAD_ATTRDEFTYPE( 0x6905 )
  • 属性の型に誤りがあるとき: SFERR_XML_BAD_ATTRTYPE( 0x6907 )
  • "=" マークがないとき: SFERR_XML_EXPECT_EQUALSIGN( 0x6908 )
  • 属性名がないとき: SFERR_XML_EXPECT_ATTRNAME( 0x690A )
  • XML 宣言が完全でないとき: SFERR_XML_EXPECT_DECLSTRING( 0x690C )
  • 要素名がないとき: SFERR_XML_EXPECT_ELEMENTNAME( 0x690D )
  • 処理命令 ( PI ) のターゲット名がないとき: SFERR_XML_EXPECT_PINAME( 0x690E )
  • 空白文字がないとき: SFERR_XML_EXPECT_WHITESPACE( 0x690F )
  • 終了タグがないとき: SFERR_XML_EXPECT_ENDTAG( 0x6912 )
  • XML 宣言に引用する文字列がないとき: SFERR_XML_EXPECT_QUOTEDSTRING( 0x691D )
  • version 宣言で XML のバージョンが指定されていないとき: SFERR_XML_EXPECT_XMLVERSION( 0x691E )
  • encoding 宣言でエンコーディングが指定されていないとき: SFERR_XML_EXPECT_ENCODING( 0x691F )
  • 開始タグが終了していないとき: SFERR_XML_UNTERMINATED_STARTTAG( 0x692D )
  • 処理命令 ( PI ) が終了していないとき: SFERR_XML_UNTERMINATED_PI( 0x692E )
  • コメントが終了していないとき: SFERR_XML_UNTERMINATED_COMMENT( 0x692F )
  • XML 宣言が終了していないとき: SFERR_XML_UNTERMINATED_XMLDECL( 0x6933 )
  • エンティティ参照が終了していないとき: SFERR_XML_UNTERMINATED_ENTITYREF( 0x6934 )
  • CDATA セクションが終了していないとき: SFERR_XML_UNTERMINATED_CDATA( 0x6935 )
  • XML 1.0 / 1.1 以外のバージョンのとき: SFERR_XML_UNSUPPORT_XMLVERSION( 0x6936 )
  • 文字が有効な範囲にないとき: SFERR_XML_INVALID_CHARREF( 0x6938 )
  • 属性値に誤りがあるとき: SFERR_XML_INVALID_ATTRVALUE( 0x6939 )
  • 要素名に誤りがあるとき: SFERR_XML_INVALID_ELEMENTNAME( 0x693A )
  • エンティティ参照の名前に誤りがあるとき: SFERR_XML_INVALID_ENTITYREFNAME( 0x693B )
  • 要素に誤りがあるとき: SFERR_XML_INVALID_ELEMENT( 0x693C )
  • xml:space 属性に誤りがあるとき: SFERR_XML_INVALID_XMLSPACE( 0x693F )
  • 名前空間接頭辞の定義が見つからないとき: SFERR_XML_UNKNOWN_PREFIX( 0x696B )
  • standalone 文書宣言に誤りがあるとき: SFERR_XML_INVALID_INSTANDALONE( 0x6941 )
  • ">" タグが余分にあるとき: SFERR_XML_MORE_ENDTAG( 0x6971 )
  • タグが対称でないとき: SFERR_XML_TAGSTACK_NOTEMPTY( 0x698C )
  • 処理命令ターゲット名が "xml" であるとき: SFERR_XML_PI_START_NO_WITHXML( 0x698D )
  • standalone 文書宣言がデフォルトの設定になっていないとき: SFERR_XML_NODEFAULT_ATTR_FORSTANDALONE( 0x6990 )
  • EOF に誤りがあるとき: SFERR_XML_UNEXPECTED_EOF( 0x6995 )
  • 名前空間付きの XML 文書で、要素の接頭辞で余分な xmlns があるとき: SFERR_XML_REDUNDANT_XMLNS_PREFIX( 0x6997 )

DTD 付き XML 文書の解析結果のエラーコードは以下の通りです。

  • 記法の名前がないとき: SFERR_XML_EXPECT_NOTATIONNAME( 0x6909 )
  • デフォルトの属性がないとき: SFERR_XML_EXPECT_DEFAULTATTR( 0x690B )
  • 属性リスト宣言 ( ATTLIST ) で属性の型がないとき: SFERR_XML_EXPECT_ATTRTYPE( 0x6910 )
  • 属性リスト宣言 ( ATTLIST ) で属性値がないとき: SFERR_XML_EXPECT_ATTRVALUE( 0x6911 )
  • エンティティ名がないとき: SFERR_XML_EXPECT_PENAME( 0x6913 )
  • エンティティ参照の名前がないとき: SFERR_XML_EXPECT_ENTITYNAME( 0x6914 )
  • 要素または属性の宣言を区切るマーク( "|" )がないとき: SFERR_XML_EXPECT_ENUMPIPE( 0x6915 )
  • 属性の列挙値がないとき: SFERR_XML_EXPECT_ENUMVALUE( 0x6916 )
  • 子要素を区切るマーク ( "," と "|" ) がないとき :SFERR_XML_EXPECT_SEQCHOICE( 0x6917 )
  • 要素の複数出現を表すマーク ( "*" ) がないとき: SFERR_XML_EXPECT_ASTERISK( 0x6918 )
  • 開始マーク ( "("、"<"、 "[" ) がないとき: SFERR_XML_EXPECT_OPENSIGN( 0x6919 )
  • 終了マーク ( ")"、">"、 "]" ) がないとき: SFERR_XML_EXPECT_ENDSIGN( 0x691A )
  • 解析対象外エンティティの宣言で NDATA キーワードがないとき: SFERR_XML_EXPECT_NDATA( 0x691B )
  • エンティティの値がないとき: SFERR_XML_EXPECT_ENTITYVALUE( 0x691C )
  • 名前空間付きエンティティまたは記法の名前に ":" マークがないとき: SFERR_XML_EXPECT_COLON( 0x6920 )
  • 要素または属性の宣言で "," マークが不足しているとき: SFERR_XML_EXPECT_SEQUENCECOMMA( 0x692B )
  • 要素型宣言が終了していないとき: SFERR_XML_UNTERMINATED_ELEMENTDECL( 0x6930 )
  • エンティティ宣言が終了していないとき: SFERR_XML_UNTERMINATED_ENTITYDECL( 0x6931 )
  • 記法宣言が終了していないとき: SFERR_XML_UNTERMINATED_NOTATIONDECL( 0x6932 )
  • エンティティ宣言で NDATA に誤りがあるとき: SFERR_XML_INVALID_NDATA( 0x693D )
  • 子要素に誤りがあるとき: SFERR_XML_INVALID_CHILDRENELEM( 0x6940 )
  • エンティティが定義されていないとき: SFERR_XML_UNKNOWN_ENTITY( 0x6969 )
  • 要素の内容モデルが定義されていないとき: SFERR_XML_UNKNOWN_MODELTYPE( 0x696A )
  • 要素の数が足らないとき: SFERR_XML_NOT_ENOUGH_ELEMENT( 0x698A )
  • 要素の定義に #PCDATA と "*" が含まれるとき: SFERR_XML_NOREPINMIXED( 0x698B )
  • DOCTYPE で定義するルート要素に誤りがあるとき: SFERR_XML_ROOTELEM_NOTLIKE_DOCTYPE( 0x698E )
  • 必須である属性が設定されていないとき: SFERR_XML_ATTR_NOTPROVIDED( 0x698F )
  • 複数の ID 属性が定義されているとき: SFERR_XML_MULTIPLEID_ATTRS( 0x6991 )
  • 属性の型 ( ID、IDREF、IDREFS、ENTITY、ENTITIES、NMTOKEN、NMTOKENS など ) が定義されていないとき: SFERR_XML_NO_MULTIPLEID_ATTRS( 0x6992 )
  • ID 属性を再利用したとき: SFERR_XML_REUSEDID( 0x6993 )
  • 空要素が内容を持っているとき: SFERR_XML_EMPTYELEM_HAS_CONTENT( 0x6994 )
  • enumeration 属性の値の解析に失敗したとき: SFERR_XML_FAILED_ENUMLIST( 0x6996 )

スキーマ付き XML 文書の解析結果のエラーコードは以下の通りです。

  • xsi:type 属性に誤りがあるとき: SFERR_XML_BAD_XSITYPE( 0x6906 )
  • include または redefine によって異なる名前空間を参照するときに schemaLocation 属性がないとき: SFERR_XML_EXPECT_SCHEMALOCATION( 0x6921 )
  • 名前または名前の参照がないとき: SFERR_XML_EXPECT_NAMEREF( 0x6922 )
  • simpleContent がないとき: SFERR_XML_EXPECT_SIMPLETYPE_CONTENT( 0x6923 )
  • simpleType の list になっていないとき: SFERR_XML_EXPECT_SIMPLETYPE_INLIST( 0x6924 )
  • simpleType の restriction になっていないとき: SFERR_XML_EXPECT_SIMPLETYPE_INRESTRICTION( 0x6925 )
  • simpleType の union になっていないとき: SFERR_XML_EXPECT_SIMPLETYPE_INUNION( 0x6926 )
  • Atomic simpleType の list になっていないとき: SFERR_XML_EXPECT_ATOMIC_ITEMTYPE( 0x6927 )
  • 基底型でないとき: SFERR_XML_EXPECT_BASETYPE( 0x6928 )
  • 派生型でないとき: SFERR_XML_EXPECT_DERIVED_TYPE( 0x6929 )
  • Datatype が検証さないとき: SFERR_XML_EXPECT_DATATYPEVALIDATOR( 0x692A )
  • whiteSpace 要素の属性値は "collapse" 以外のとき: SFERR_XML_EXPECT_WS_COLLAPSE( 0x692C )
  • サポートされていない Datatype のとき: SFERR_XML_UNSUPPORT_FEATURE( 0x6937 )
  • targetNamespace 属性に誤りがあるとき: SFERR_XML_INVALID_TARGETNAMESPACE 0x693E )
  • import する名前空間に誤りがあるとき: SFERR_XML_INVALID_IMPORTNAMESPACE 0x6942 )
  • 要素に誤りがあるとき: SFERR_XML_INVALID_SCHEMA_ELEMENT( 0x6943 )
  • ルート要素に誤りがあるとき: SFERR_XML_INVALID_SCHEMA_ROOT( 0x6944 )
  • annotation に誤りがあるとき: SFERR_XML_INVALID_ANNOTATION( 0x6945 )
  • simpleContent に誤りがあるとき: SFERR_XML_INVALID_SIMPLECONTENT( 0x6946 )
  • complexContent に誤りがあるとき: SFERR_XML_INVALID_COMPLEXCONTENT( 0x6947 )
  • attributeGroup の内容に誤りがあるとき: SFERR_XML_INVALID_ATTGROUPCONTENT( 0x6948 )
  • attribute の内容に誤りがあるとき: SFERR_XML_INVALID_ATTRIBUTECONTENT( 0x6949 )
  • fixed 属性と default 属性を同時に設定したとき: SFERR_XML_INVALID_DEFAULT_FIXED_ATTI( 0x694A )
  • attribute の名前空間に誤りがあるとき: SFERR_XML_INVALID_ATTRIBUTE_NS( 0x694B )
  • group の内容に誤りがあるとき: SFERR_XML_INVALID_GROUPCONTENT( 0x694C )
  • annotation の内容に誤りがあるとき: SFERR_XML_INVALID_ANNOTATIONCONTENT( 0x694D )
  • simpleType の内容に誤りがあるとき: SFERR_XML_INVALID_SIMPLETYPECONTENT( 0x694E )
  • list の内容に誤りがあるとき: SFERR_XML_INVALID_LISTCONTENT( 0x694F )
  • restriction の内容に誤りがあるとき: SFERR_XML_INVALID_RESTRICTIONCONTENT( 0x6950 )
  • union の内容に誤りがあるとき: SFERR_XML_INVALID_UNIONCONTENT( 0x6951 )
  • redefine が重複しているとき: SFERR_XML_INVALID_REDEFINE( 0x6952 )
  • redefine する simpleType に誤りがあるとき: SFERR_XML_INVALID_REDEFINE_SIMPLETYPE( 0x6953 )
  • redefine する simpleType の基底型に誤りがあるとき: SFERR_XML_INVALID_REDEFINE_SIMPLETYPEBASE( 0x6954 )
  • redefine する complexType に誤りがあるとき: SFERR_XML_INVALID_REDEFINE_COMPLEXTYPE( 0x6955 )
  • redefine する complexType の基底型に誤りがあるとき: SFERR_XML_INVALID_REDEFINE_COMPLEXTYPEBASE( 0x6956 )
  • redefine する group の範囲に誤りがあるとき: SFERR_XML_INVALID_REDEFINE_GROUP_MINMAX( 0x6957 )
  • redefine できないとき: SFERR_XML_INVALID_REDEFINE_CHILD( 0x6958 )
  • complexType に誤りがあるとき: SFERR_XML_INVALID_COMPLEXTYPEINFO( 0x6959 )
  • simpleContent の基底型に誤りがあるとき: SFERR_XML_INVALID_SIMPLECONTENT_BASE( 0x695A )
  • complexType の基底型に誤りがあるとき: SFERR_XML_INVALID_COMPLEXTYPE_BASE( 0x695B )
  • complexContent の子要素に誤りがあるとき: SFERR_XML_INVALID_CHILD_COMPLEXCONTENT( 0x695C )
  • 要素に fixed 属性と default 属性を同時に設定したとき: SFERR_XML_INVALID_DEFAULT_FIXED_ELEMENT( 0x695D )
  • substitutionGroup に誤りがあるとき: SFERR_XML_INVALID_SUBSGROUP( 0x695E )
  • 名前空間の参照に誤りがあるとき: SFERR_XML_INVALID_NSREFERENCE( 0x695F )
  • all の内容に誤りがあるとき: SFERR_XML_INVALID_ALLCONTENT( 0x6960 )
  • データの範囲に誤りがあるとき: SFERR_XML_INVALID_MIN_MAX_OCCURS( 0x6961 )
  • complexType の子要素の型に誤りがあるとき: SFERR_XML_INVALID_CHILD_COMPLEXTYPE( 0x6962 )
  • anyAttribute の内容に誤りがあるとき: SFERR_XML_INVALID_ANYATTRIBUTECONTENT( 0x6963 )
  • simpleContent に子要素があるとき: SFERR_XML_INVALID_CHILD_SIMPLECONTENT( 0x6964 )
  • simpleType に子要素があるとき: SFERR_XML_INVALID_SIMPLETYPE_HAS_CHILD( 0x6965 )
  • fixed 属性に誤りがあるとき: SFERR_XML_INVALID_FIXED_VALUE( 0x6966 )
  • block 属性に誤りがあるとき: SFERR_XML_INVALID_BLOCK_VALUE( 0x6967 )
  • final 属性に誤りがあるとき: SFERR_XML_INVALID_FINAL_VALUE( 0x6968 )
  • complexType が定義されていないとき: SFERR_XML_UNKNOWN_COMPLEXTYPE( 0x696C )
  • simpleType が定義されていないとき: SFERR_XML_UNKNOWN_SIMPLETYPE( 0x696D )
  • include する名前空間と include される名前空間に誤りがあるとき: SFERR_XML_DIFFERENCE_INCLUDE_NS( 0x696E )
  • import する名前空間と import される名前空間に誤りがあるとき: SFERR_XML_DIFFERENCE_IMPORT_NS( 0x696F )
  • redefine する名前空間と redefine される名前空間に誤りがあるとき: SFERR_XML_DIFFERENCE_REDEFINE_NS( 0x6970 )
  • DTD 付きの XML 文書または 要素数が定義されたものより余分にあるとき: SFERR_XML_MORE_ELEMENT( 0x6972 )
  • 複数の complexType の名前が定義されているとき: SFERR_XML_MORE_COMPLEXTYPE_NAME( 0x6973 )
  • 複数の simpleType の名前が定義されているとき: SFERR_XML_MORE_SIMPLEYPE_NAME( 0x6974 )
  • 複数の attribute の参照の内容が定義されているとき: SFERR_XML_MORE_ATTRIBUTEREF_CONTENT( 0x6975 )
  • default 属性は use 属性が optional 以外で設定されているとき: SFERR_XML_NOT_OPTIONAL_DEFAULT_ATTI( 0x6976 )
  • simpleType が見つからないとき: SFERR_XML_NOT_FIND_SIMPLETYPE( 0x6977 )
  • redefine する宣言が見つからないとき: SFERR_XML_NOT_FIND_REDEFINE_DECLARATION( 0x6978 )
  • type 属性が見つからないとき: SFERR_XML_NOT_FIND_TYPE( 0x6979 )
  • 要素の参照が見つからないとき: SFERR_XML_NOT_FIND_REF_ELEMENT( 0x697A )
  • スキーマ宣言が見つからないとき: SFERR_XML_NOT_FIND_DECLARATION( 0x697B )
  • attribute の定義が見つからないとき: SFERR_XML_NOT_FIND_ATTRIBUTE( 0x697C )
  • 基底型の定義が見つからないとき: SFERR_XML_NOT_FIND_BASETYPE( 0x697D )
  • type 属性の定義が重複しているとき: SFERR_XML_DUPLICATE_TYPE( 0x697E )
  • 要素の宣言が重複しているとき: SFERR_XML_DUPLICATE_ELEMENT_DECLARATION( 0x697F )
  • attribute の参照が重複しているとき: SFERR_XML_DUPLICATE_REFATTRIBUTE( 0x6980 )
  • facet の定義が重複しているとき: SFERR_XML_DUPLICATE_FACET( 0x6981 )
  • attribute の定義が重複しているとき: SFERR_XML_REPEATED_ATTRIBUTE( 0x6982 )
  • substitution の定義が重複してるとき: SFERR_XML_REPEATED_SUBSTITUTION( 0x6983 )
  • extension の定義が重複しているとき: SFERR_XML_REPEATED_EXTENSION( 0x6984 )
  • restriction の定義が重複しているとき: SFERR_XML_REPEATED_RESTRICTION( 0x6985 )
  • union の定義が重複しているとき: SFERR_XML_REPEATED_UNION( 0x6986 )
  • list の定義が重複しているとき: SFERR_XML_REPEATED_LIST( 0x6987 )
  • 要素を空要素にしようとしたとき: SFERR_XML_NILL_NOT_ALLOWED( 0x6988 )
  • 参照する内容が存在しないとき: SFERR_XML_NO_CONTENT_FOR_REF( 0x6989 )
  • group の redefine が重複しているとき: SFERR_XML_REDEFINEREF_COUNT( 0x6998 )
  • attributeGroup の redefine が重複しているとき: SFERR_XML_ATTFROUPREF_COUNT( 0x6999 )
  • AnonymousType の要素が定義されていないとき: SFERR_XML_ELEMENT_WITH_ANONYMOUSTYPE( 0x699A )
  • データ型が循環定義されているとき: SFERR_XML_CIRCULAR_DEFINITION( 0x699B )
  • all 要素の子要素以外の要素が含まれているとき: SFERR_XML_ALLCONTENT_LIMITED( 0x699C )
  • abstractType が定義されているとき: SFERR_XML_ABSTRACT_TYPE( 0x699D )
  • ルート要素で他の要素を参照しようとしたとき: SFERR_XML_TOPELEMENT_INCLUDE_REF( 0x699E )

詳細情報: SFCErrorEnum

解説

この関数は、XML 文書(ファイル、ストリーム、文字列)を読み込み、DOM 方式で解析します。

引数にはストリーム、ファイルパス、文字列を渡します。 ファイルパスのデフォルト ディレクトリはアプリのホームディレクトリです。

[Caution] 注意

BREW の制約により、ファイルの絶対パスは 64 文字より小さくなければいけません。

また、携帯端末内のローカルファイルを指定する必要があります(サーバーのファイルは指定できません)。

参照

static_exception::static_catch | SFCErrorEnum


SFXXMLDOMParser::Reset
すべての内部変数をリセットします。
[ public ]
Void Reset(Void);

解説

この関数は、この XML パーサーが使用している、 すべての内部変数をリセットします。

参照

SFXXMLDOMParser::~SFXXMLDOMParser


SFXXMLDOMParser::SetCreateCommentNodes
Comment ノードを生成するかどうかのフラグ値(Comment ノード生成フラグ値)を設定します。
[ public ]
Void SetCreateCommentNodes(
    BoolConst create   // Comment ノードを生成するかどうか 
);

解説

この関数は、Comment ノードを生成するかどうかのフラグ値(Comment ノード生成フラグ値)を設定します。

デフォルト値: OFF(false)[デフォルトの設定では、Comment ノードは生成されません。]

参照

SFXXMLDOMParser::GetCreateCommentNodes


SFXXMLDOMParser::SetDoIndent
インデント処理するかどうかのフラグ値(インデント処理フラグ値)を設定します。
[ public ]
Void SetDoIndent(
    BoolConst state   // インデント処理するかどうか
);

解説

この関数は、インデント処理するかどうかのフラグ値(インデント処理フラグ値)を設定します。

デフォルト値: OFF(false)[デフォルトの設定では、インデント処理されません。]

[Note] 注意

このフラグを ON(true)に設定すると、 XML 文書を処理するときに、 XML プロローグ、ルート要素、コメントと CDATA セクションの内部を除く各行について、 先頭タグの前と前行の末尾の空白部分をテキストとするインデント用 Text のノードが挿入されます。

参照

SFXXMLDOMParser::GetDoIndent


SFXXMLDOMParser::SetDoNamespaces
名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を設定します。
[ public ]
Void SetDoNamespaces(
    BoolConst state   // 名前空間を処理するかどうか
);

解説

この関数は、名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を設定します。

デフォルト値: OFF(false)[デフォルトの設定では、名前空間は処理されません。]

[Note] 注意

SFXXMLDOMParser::SetDoSchema 関数によりスキーマ処理フラグを ON に設定する場合は、 この関数を呼び出して名前空間処理フラグも ON にする必要があります。

[Note] 注意

このフラグを ON(true)に設定すると、 このパーサーで DOM ツリーを構築するときに、 Element と Attribute の各ノードに名前空間 URI が設定されます。

そして、Element ノードと Attribute ノードには、 末尾が NS である名前の関数で名前空間 URI とローカル名を指定してアクセスすることが可能になります。

参照

SFXXMLDOMParser::GetDoNamespaces | SFXXMLDOMParser::GetFirstChildElementNS | SFXXMLDOMParser::GetNextSiblingElementNS | SFXXMLDOMParser::SetDoSchema


SFXXMLDOMParser::SetDoSchema
XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を設定します。
[ public ]
Void SetDoSchema(
    BoolConst state   // スキーマを処理するかどうか
);

解説

この関数は、この XML パーサーが XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を設定します。

デフォルト値: OFF(false)[デフォルトの設定では、スキーマは処理されません。]

[Note] 注意

XML 文書のスキーマを処理するには、 SFXXMLDOMParser::SetDoNamespaces 関数を呼び出して名前空間処理フラグを ON にする必要があります。

[Note] 注意

XML 文書をスキーマで検証するには、以下の設定も必要です。

  1. SFXXMLDOMParser::SetGrammar 関数を呼び出して文法を SFXXMLGrammar::GRAMMAR_SCHEMA に設定します。
  2. SFXXMLDOMParser::SetDoNamespaces 関数を呼び出して名前空間処理フラグを ON に設定します。
  3. SFXXMLDOMParser::SetValidationSchema 関数を呼び出してスキーマ検証フラグを ON に設定します。
  4. SFXXMLDOMParser::SetSchemaLocation 関数を呼び出して XSD ファイルを設定します。

参照

SFXXMLDOMParser::GetDoSchema | SFXXMLDOMParser::SetDoNamespaces | SFXXMLGrammar::GrammarType | SFXXMLDOMParser::SetValidationSchema | SFXXMLDOMParser::SetSchemaLocation


SFXXMLDOMParser::SetGrammar
XML 文書の記述内容を規定する文法(言語)を設定します。
[ public ]
Void SetGrammar(
    SFXXMLGrammar::GrammarType grammar   // 文法の種類(SFXXMLGrammar::GRAMMAR_DTD または SFXXMLGrammar::GRAMMAR_SCHEMA)
);

引数

grammar

文法の種類を指定します。

  • DTD の場合: SFXXMLGrammar::GRAMMAR_DTD
  • XML スキーマの場合: SFXXMLGrammar::GRAMMAR_SCHEMA
  • その他の場合(デフォルト): SFXXMLGrammar::GRAMMAR_UNKNOWN

解説

この関数は、XML パーサーが解析する XML 文書の記述内容を規定する文法(言語)を設定します。

grammar 引数に指定できる文法の種類は以下の通りです。

  • DTD の場合: SFXXMLGrammar::GRAMMAR_DTD
  • XML スキーマの場合: SFXXMLGrammar::GRAMMAR_SCHEMA
  • その他の場合(デフォルト): SFXXMLGrammar::GRAMMAR_UNKNOWN

デフォルト値: SFXXMLGrammar::GRAMMAR_UNKNOWN(XML 文書の記述内容を規定する文法なし)

[Note] DOCTYPE 宣言

XML 文書内の DOCTYPE 宣言の内容は、 この関数で文法が SFXXMLGrammar::GRAMMAR_DTD に設定された場合にだけ読み込まれます。

デフォルトの設定(SFXXMLGrammar::GRAMMAR_UNKNOWN)では読み込まれません。

参照

SFXXMLGrammar::GrammarType | SFXXMLDOMParser::SetValidationDTD | SFXXMLDOMParser::SetLoadExternalDTD | SFXXMLDOMParser::SetDoSchema | SFXXMLDOMParser::SetValidationSchema | SFXXMLDOMParser::SetSchemaLocation


SFXXMLDOMParser::SetIgnoreAnnotations
【無効】XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を設定します。
[ public ]
Void SetIgnoreAnnotations(
    BoolConst state   // Annotation 要素の検証を無効にするかどうか
);

解説

この関数は、 XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を設定します。

デフォルト値: ON(true)

[Note] 注意

Annotation 要素検証無効フラグは、XML 文書を XML スキーマで検証する場合のみ有効です。

デフォルトの設定では、Annotation 要素検証無効フラグは true なので、 XML スキーマの Annotation 要素の検証は行われません。

[Caution] 注意

現バージョンでは、Annotation 要素検証無効フラグ値を OFF にしても検証は行われません(このフラグは無効です)。

参照

SFXXMLDOMParser::GetIgnoreAnnotations | SFXXMLDOMParser::SetGrammar | SFXXMLDOMParser::SetDoSchema | SFXXMLDOMParser::SetValidationSchema | SFXXMLDOMParser::SetSchemaLocation


SFXXMLDOMParser::SetLoadExternalDTD
外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を設定します。
[ public ]
Void SetLoadExternalDTD(
    BoolConst state   // 外部の DTD ファイルをロードするかどうか
);

解説

この関数は、この XML パーサーが XML 文書内に指定された、 外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を設定します。

デフォルト値: OFF(false)[デフォルトの設定では、外部 DTD ファイルはロードされません。]

[Note] 注意

XML 文書を外部 DTD ファイルをロードして検証するには、以下の設定も必要です。

  1. SFXXMLDOMParser::SetGrammar 関数を呼び出して文法を SFXXMLGrammar::GRAMMAR_DTD に設定します。
  2. SFXXMLDOMParser::SetValidationDTD 関数を呼び出して DTD 検証フラグを ON にします。

DTD 検証フラグが ON の場合は、外部 DTD ファイルは自動的にロードされます。

[Caution] 注意

BREW の制約により、ファイルの絶対パスは 64 文字より小さくなければいけません。

また、携帯端末内のローカルファイルを指定する必要があります(サーバーのファイルは指定できません)。

参照

SFXXMLDOMParser::SetGrammar | SFXXMLDOMParser::SetValidationDTD | SFXXMLGrammar::GrammarType | SFXXMLDOMParser::GetLoadExternalDTD


SFXXMLDOMParser::SetSchemaLocation
XML 文書を検証するための XSD ファイルを設定します。
[ public ]
Void SetSchemaLocation(
    SFXAnsiStringConstRef name   // ローカル XSD ファイル
);

解説

この関数は、この XML パーサーが XML 文書を検証するための XSD ファイルを設定します。

[Note] 注意

XML 文書をスキーマで検証するには、以下の設定も必要です。

  1. SFXXMLDOMParser::SetGrammar 関数を呼び出して文法を SFXXMLGrammar::GRAMMAR_SCHEMA に設定します。
  2. SFXXMLDOMParser::SetDoSchema 関数を呼び出してスキーマ処理フラグを ON に設定します。
  3. SFXXMLDOMParser::SetDoNamespaces 関数を呼び出して名前空間処理フラグを ON に設定します。
  4. SFXXMLDOMParser::SetValidationSchema 関数を呼び出してスキーマ検証フラグを ON に設定します。

[Caution] 注意

BREW の制約により、ファイルの絶対パスは 64 文字より小さくなければいけません。

また、携帯端末内のローカルファイルを指定する必要があります(サーバーのファイルは指定できません)。

参照

SFXXMLGrammar::GrammarType | SFXXMLDOMParser::SetDoSchema | SFXXMLDOMParser::SetDoNamespaces | SFXXMLDOMParser::SetValidationSchema | SFXXMLDOMParser::GetValidationSchema


SFXXMLDOMParser::SetValidationDTD
XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を設定します。
[ public ]
Void SetValidationDTD(
    BoolConst state   // XML 文書を DTD で検証するかどうか
);

解説

この関数は、この XML パーサーが XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を設定します。

デフォルト値: OFF(false)[デフォルトの設定では、DTD で検証されません。]

[Note] 注意

XML 文書を DTD で検証するには、以下の設定も必要です。

  1. SFXXMLDOMParser::SetGrammar 関数を呼び出して文法を SFXXMLGrammar::GRAMMAR_DTD に設定します。
  2. DTD が外部ファイルである場合は、 SFXXMLDOMParser::SetLoadExternalDTD 関数を呼び出して 外部 DTD 読み込みフラグを ON に設定します(省略可)。

DTD 検証フラグが ON の場合は、外部 DTD ファイルは自動的にロードされます。

[Caution] 注意

XML 文書の検証は部分的に行われます。現在のところ、完全な検証はサポートされていません。

使用例

// 解析対象の XML 文書 ( file.xml )
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE Mail SYSTEM "personal.dtd">
<Mail>
  <From>&name;</From>
  <To>Receiver</To>
  <Cc>&Email;</Cc>
  <Date> Thu, 7 Oct 1999 11:15:16 -0600</Date>
  <Subject>XML Introduction</Subject>
  <Body>Comments:<P align = "right">Thanks for reading<br/>this article</P>
    <br/>
    <P>Hope you enjoyed this article</P>
    <P>&copyright;</P>
  </Body>
</Mail>

// 検証用の DTD ファイル ( personal.dtd )
<?xml encoding="ISO-8859-1"?>

<!-- @version: 10.1-->

<!ELEMENT Mail (From, To, Cc?, Date?, Subject, Body)>
<!ELEMENT From (#PCDATA)>
<!ELEMENT To (#PCDATA)>
<!ELEMENT Cc (#PCDATA)>
<!ELEMENT Date (#PCDATA)>
<!ELEMENT Subject (#PCDATA)>
<!ELEMENT Body (#PCDATA | P | Br)*>
<!ELEMENT P (#PCDATA | br)*>
<!ATTLIST P align (left | right | justify) "left">
<!ELEMENT br EMPTY>
<!ENTITY  name "sophia">
<!ENTITY  Email "&name;@s-cradle.com">
<!ENTITY  copyright "Copyright (C) 2002 - 2017 Sophia Cradle Incorporated.">

// DTD 付き XML 文書の解析
SFXXMLDOMParser parser;
SFCError error;

// DTD 付き XML 文書を解析するため、文法タイプを設定する
parser.SetGrammar(SFXXMLGrammar::GRAMMAR_DTD);

// XML 文書を DTD で検証するように設定する
parser.SetValidationDTD(true);

// DTD を外部から読み込むように設定する
parser.SetLoadExternalDTD(true);

// DOM パーサーを使用して DTD 付き XML 文書を解析する
error = parser.Parse(SFXPath("/file.xml"));

if (error == SFERR_NO_ERROR) {
    // ルート要素を取得する
    SFXXMLDocumentPtr root = parser.GetDocument();

    // ドキュメント型を取得する
    SFXXMLDocumentTypePtr documentType = root->GetDocumentType();

    // 外部サブセット ( external DTD subset ) のシステム識別子を取得する
    // id は "personal.dtd" になる
    SFXAnsiString id = documentType->GetSystemID();

    // DTD に定義されているエンティティを DOMNamedNodeMap として取得する
    SFXXMLNode::DOMNamedNodeMapPtr entitymap = documentType->GetEntities();

    // "name" エンティティの値を取得する
    // name は "sophia" になる
    SFXAnsiString name = SFXXMLEntityPtr(entitymap->GetNamedItem("name"))->GetValue();
}

参照

SFXXMLGrammar::GrammarType | SFXXMLDOMParser::SetValidationDTD | SFXXMLDOMParser::SetLoadExternalDTD | SFXXMLDOMParser::GetValidationDTD


SFXXMLDOMParser::SetValidationSchema
XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を設定します。
[ public ]
Void SetValidationSchema(
    BoolConst state   // XML 文書をスキーマで検証するかどうか
);

解説

この関数は、この XML パーサーが XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を設定します。

デフォルト値: OFF(false)[デフォルトの設定では、スキーマで検証されません。]

[Note] 注意

XML 文書をスキーマで検証するには、以下の設定も必要です。

  1. SFXXMLDOMParser::SetGrammar 関数を呼び出して文法を SFXXMLGrammar::GRAMMAR_SCHEMA に設定します。
  2. SFXXMLDOMParser::SetDoNamespaces 関数を呼び出して名前空間処理フラグを ON に設定します。
  3. SFXXMLDOMParser::SetDoSchema 関数を呼び出してスキーマ処理フラグを ON に設定します。
  4. SFXXMLDOMParser::SetSchemaLocation 関数を呼び出して XSD ファイルを設定します。

[Caution] 注意

XML 文書の検証は部分的に行われます。現在のところ、完全な検証はサポートされていません。

使用例

SFXXMLDOMParser parser;

// Comment ノードを作成するように設定する
parser.SetCreateCommentNodes(true);

// 名前空間を処理するように設定する
parser.SetDoNamespaces(true);

// スキーマ付き XML 文書を解析するため、文法タイプを設定する
parser.SetGrammar(SFXXMLGrammar::GRAMMAR_SCHEMA);

// スキーマを処理するように設定する
parser.SetDoSchema(true);

// XSD ファイルを設定する
// ( デフォルト ディレクトリ: アプリのホームディレクトリ )
parser.SetSchemaLocation("schema.xsd");

// XML 文書をスキーマで検証するように設定する
parser.SetValidationSchema(true);

// DOM パーサーを使用して スキーマ付き XML 文書を解析する
error = parser.Parse(SFXPath("/file.xml"));

参照

SFXXMLGrammar::GrammarType | SFXXMLDOMParser::SetDoSchema | SFXXMLDOMParser::SetSchemaLocation | SFXXMLDOMParser::GetValidationSchema