5.1.8 XML検証

LANSA Integrator

5.1.8 XML検証


すべての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スキーマ検証は省略値で無効です。
この機能を有効にするには、SCHEMAキーワードまたはvalidation.schemaプロパティを使用します。

 

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検証機能とスキーマ検証機能の両方が有効な場合はどうなるか?

パイプラインに両方の検証機能がある場合

インスタンス・ドキュメントにあるのがDTD文法(ルート・エレメントの前のDOCTYPE)だけの場合は、DTD検証エラーのみが報告されます。

インスタンス・ドキュメントにあるのがXMLスキーマ文法のみの場合は、XMLスキーマ検証エラーのみが報告されます。

インスタンス・ドキュメントにDTD文法とXMLスキーマ文法の両方がある場合、DTDとXMLスキーマの両方の検証エラーが報告されます。

詳細については、以下を参照してください。

xml.apache.org/xerces2-j/faqs.html

xml.apache.org/xerces2-j/faq-pcfp.html

xml.apache.org/xerces2-j/features.html

xml.apache.org/xerces2-j/xml-schema.html