前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1

18.5. DTD と XMLSchema

DTD と XMLSchema は、XML 文書を解析するときに、その文書が正しい形式で構成されているかどうかをチェックするための文法です。

DTD ではデータ型を定義できません。文法も XML で記述されていません。

XMLSchema は XML 形式で記述され、データ型の定義や名前空間が扱えるなど、DTD には無い機能があります。

SophiaFramework は、DTD と XMLSchema をサポートしています。DTD や XMLSchema を使うと、解析しているときに、文法で規定しているデータがあれば、エラーを返します。

なお、WSDL 文書を解析するときには XMLSchema のサポートが前提になります。

18.5.1. DTD付きXML文書の処理

DTD 付き XML 文書は、SFXXMLDOMParser クラスまたは SFXXMLSAXParser クラスの以下の関数を使って処理します。

表 18.11. DTD 付き XML 文書を処理するための関数

使用目的 SFXXMLDOMParser クラスの関数名 SFXXMLSAXParser クラスの関数名
XML 文書を DTD で検証する場合 SFXXMLDOMParser::SetValidationDTD SFXXMLSAXParser::SetValidationDTD
DTD 付き XML 文書に関して、外部 DTD ファイルをロードする場合 SFXXMLDOMParser::SetLoadExternalDTD SFXXMLSAXParser::SetLoadExternalDTD
[Note] 外部 DTD ファイルをロードする方法

DTD が XML 文書とは別のファイル( 外部 DTD ファイル )で定義される場合、SetLoadExternalDTD 関数のパラメーターを true に指定して外部 DTD ファイルをロードします。

SFXXMLDocumentType オブジェクトに対して、以下のような DTD に関連する操作が可能です。

表 18.12. 外部 DTD ファイルを処理するための関数

関数名 解説
SFXXMLDocumentType::GetEntities DTD で宣言される全エンティティを取得します。
SFXXMLDocumentType::GetNotations DTD で宣言される記法を取得します。
SFXXMLDocumentType::GetPublicID 外部サブセットの公開識別子を取得します。
SFXXMLDocumentType::GetSystemID 外部サブセットのシステム識別子を取得します。

18.5.2. XMLSchema 付き XML 文書の処理

XMLSchema 付き XML 文書は、SFXXSDDOMParser クラスまたは SFXXMLSAXParser クラスの以下の関数を使って処理します。

表 18.13. XMLSchema 付き XML 文書を処理するための関数

使用目的 SFXXMLDOMParser クラスの関数名 SFXXMLSAXParser クラスの関数名
スキーマを処理する場合 SFXXMLDOMParser::SetDoSchema SFXXMLSAXParser::SetDoSchema
XML 文書をスキーマで検証する場合 SFXXMLDOMParser::SetValidationSchema SFXXMLSAXParser::SetValidationSchema
スキーマ付きXML文書の Annotation 要素を無効にする場合 SFXXMLDOMParser::SetIgnoreAnnotations SFXXMLSAXParser::SetIgnoreAnnotations
スキーマ付きXML文書 の XSD ファイルを指定する場合 SFXXMLDOMParser::SetSchemaLocation SFXXMLSAXParser::SetSchemaLocation
[Note] 名前空間の設定方法

SFXXMLDOMParser::SetDoNamespaces 関数で true を指定することで、名前空間を設定できます。