前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3

19.5. DTD と XMLSchema

DTD と XMLスキーマは、XML 文書を解析するときに、 その文書が正しい形式で構成されているかどうかをチェックするための文法です。 SophiaFramework UNIVERSE は、DTD と XMLスキーマをサポートしています。

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

XMLスキーマは XML 形式で記述され、データ型の定義など DTD には無い機能があります。

DTD または XMLスキーマを使用して XML 文書を解析するとき、 XML 文書が DTD または XMLスキーマの文法に従って記述されていなければエラーを返します。

[Caution] 注意

現バージョンの SophiaFramework UNIVERSE では、DTD / XMLスキーマによる完全な XML 文書の検証をサポートしていません。 部分的な検証のみサポートしています(あるケースでは、文法的な誤りが有ってもエラーにならない場合があります)。

19.5.1. DTD 付き XML 文書の処理

DTD 付き XML 文書は SFXXMLDOMParser クラス、 または SFXXMLSAXParser クラスで定義される関数を使用して DTD の処理を行います。

SetGrammar 関数で SFXXMLGrammar::GRAMMAR_DTD に設定し、 必要に応じて SetValidationDTD 関数で DTD 検証フラグを ON にします。 外部 DTD ファイルの場合は、SetLoadExternalDTD 関数で 外部 DTD ファイルをロードする設定にする必要があります。

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

使用目的 SFXXMLDOMParser クラス SFXXMLSAXParser クラス
文法(言語)の設定 SFXXMLDOMParser::SetGrammar 関数 SFXXMLSAXParser::SetGrammar 関数
DTD 検証の設定 SFXXMLDOMParser::SetValidationDTD 関数 SFXXMLSAXParser::SetValidationDTD 関数
外部 DTD ファイルのロード設定 SFXXMLDOMParser::SetLoadExternalDTD 関数 SFXXMLSAXParser::SetLoadExternalDTD 関数
[Note] 外部 DTD ファイルをロードする方法

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

※ SophiaFramework UNIVERSE の仕様上の制限から、別のサーバーにある外部 DTD ファイルはロードできません。 ロード可能なのは同じ移動機にあるローカルファイルだけです。

[Note] クラスの DTD 操作関数

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

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

19.5.2. XMLスキーマ付き XML 文書の処理

XMLスキーマ付き XML 文書は SFXXMLDOMParser クラス、 または SFXXMLSAXParser クラスの以下の関数で定義される関数を使用して XMLスキーマの処理を行います。

SetGrammar 関数で SFXXMLGrammar::GRAMMAR_SCHEMA に設定し、 SetDoSchema 関数でスキーマを処理する設定にし、 必要に応じて SetValidationSchema 関数でスキーマ検証フラグを ON にします。 XSD ファイルを指定する場合は、SetSchemaLocation 関数を使用します。

表 19.17. XMLスキーマ付き XML 文書を処理するための関数

使用目的 SFXXMLDOMParser クラス SFXXMLSAXParser クラス
文法(言語)の設定 SFXXMLDOMParser::SetGrammar 関数 SFXXMLSAXParser::SetGrammar 関数
スキーマ処理の設定 SFXXMLDOMParser::SetDoSchema 関数 SFXXMLSAXParser::SetDoSchema 関数
スキーマ検証の設定 SFXXMLDOMParser::SetValidationSchema 関数 SFXXMLSAXParser::SetValidationSchema 関数
XSD ファイルの指定 SFXXMLDOMParser::SetSchemaLocation 関数 SFXXMLSAXParser::SetSchemaLocation 関数
[Note] XSD ファイルをロードする方法

XSD ファイルをロードするには、 SetSchemaLocation 関数の引数に XSD ファイルのパス名を指定します。

※ SophiaFramework UNIVERSE の仕様上の制限から、別のサーバーにある XSD ファイルはロードできません。 ロード可能なのは同じ移動機にあるローカルファイルだけです。