すべてのXMLサービスには、DTDとXMLスキーマの文法を使用するXMLドキュメントを検証する機能があります。
すべてのXMLサービスでSAX2のorg.xml.sax.XMLReaderインターフェースを使用し、このインターフェース経由で検証機能が有効になります。
すべてのXMLサービスでorg.apache.xerces.parsers.SAXParserパーサーを使用し、以下の機能が有効になります。
機能 | 記述 |
|---|---|
http://xml.org/sax/features/validation | DTD検証が有効です。 |
http://xml.org/sax/features/namespaces | ネームスペース処理が有効です。 |
http://apache.org/xml/features/validation/dynamic | 動的検証が有効です。 |
http://apache.org/xml/features/validation/schema | XMLスキーマ検証はデフォルトで無効です。 |
DTD文法は、ルート・エレメントの前のDOCTYPEで指定します。
<!DOCTYPE Orders SYSTEM "order.dtd">
XMLスキーマ文法は、ドキュメントのルート・エレメントのxsi:schemaLocationまたはxsi:noNamespaceSchemaLocation属性で指定します。
接頭辞xsiは、勧告で指定するように、スキーマ・ドキュメント・インスタンスのネームスペースにバインドする必要があります。
XMLスキーマ文法を使用する各ドキュメントでは、xsi:schemaLocation属性を使用して、ドキュメントで使用される文法の場所を指定する必要があります(ネームスペースを使用する場合)。ネームスペースを使用しない場合は、xsi:noNamespaceSchemaLocation属性を使用します。
通常は、ドキュメントのルート/トップレベル・エレメントに配置されますが、どのエレメントにも出現する可能性があります。
以下に、ターゲットのネームスペースがない場合の例を示します。
<document xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:noNamespaceSchemaLocation='document.xsd'></document>
以下に、ターゲットのネームスペースがある場合の例を示します。スキーマに定義されたターゲット・ネームスペースとは異なるネームスペースを指定するとエラーが発生するため注意してください。
<document xmlns='http://my.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:schemaLocation='http://my.com document.xsd'></document>
DTD検証機能とスキーマ検証機能の両方が有効な場合
パイプラインに両方の検証機能がある場合は以下のようになります。
詳細については、以下を参照してください。