モジュール java.xml

パッケージjavax.xml.validation

XML文書の検証のためのAPIを提供します。 検証とは、XMLドキュメントが指定されたXML スキーマのインスタンスであることを検証するプロセスです。 XMLスキーマは、そのインスタンス・ドキュメントが表すコンテンツ・モデル(文法またはボキャブラリとも呼ばれる)を定義します。

XMLスキーマの作成には、広く利用されている専門言語が数多く存在します。 最も人気のあるものには次のものがあります:

  • 文書型定義(DTD) - XMLの組込み型スキーマ言語。
  • W3C XML Schema (WXS) - オブジェクト指向のXMLスキーマ言語。 WXSもXMLドキュメントの文字データを制約するタイプ・システムを提供する。 WXSは、World Wide Web Consortium (W3C)によって管理されているW3C勧告。つまり、批准されたW3C標準仕様である。
  • RELAX NG (RNG)- パターン・ベースのユーザー・フレンドリなXMLスキーマ言語。 RNGスキーマもXML文字データを制約する型を使用する。 RNGは、Organization for the Advancement of Structured Information Standards (OASIS)によって管理されている、OASISおよびISO (International Organization for Standardization)標準である。
  • Schematron - ルール・ベースのXMLスキーマ言語。 DTD、WXS、およびRNGは、コンテンツ・モデルの構造を表現するために設計されているのに対し、Schematronは、ほかのスキーマ言語で表現が難しい、あるいは表現できない個別ルールを実行するために設計されている。 Schematronは、前述の構造的スキーマ言語で書かれたスキーマを補足するためのものである。 Schematronは「ISO標準」です。

JAXPは、SAXParserインスタンスまたはDocumentBuilderインスタンスのいずれかで表されるXMLパーサーの機能として検証をサポートしていますが、Validation APIが優先されます。

JAXP検証APIは、XMLドキュメントの構文解析からインスタンス・ドキュメントの検証を分離します。 これが役立つのは、次のような理由からです。

  • 追加のスキーマ言語のサポート。 JAXPパーサーの実装は、利用可能なXMLスキーマ言語のサブセットのみをサポートします。 検証APIでは、アプリケーションが追加のスキーマ言語をサポートする特殊化検証ライブラリのメリットを活かせる標準メカニズムを提供する。
  • XMLインスタンスおよびスキーマの容易な実行時の連結。 JAXPパーサーによる検証に使用するスキーマの位置の特定は混乱を招くことがある。 検証APIを使用すると、このプロセスが簡素化される(次のを参照)。

使用例次の例は、検証APIを使用したXMLドキュメントの検証を示しています。読みやすさを考慮して、一部の例外処理は記載されていません。


     // parse an XML document into a DOM tree
     DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
     Document document = parser.parse(new File("instance.xml"));

     // create a SchemaFactory capable of understanding WXS schemas
     SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

     // load a WXS schema, represented by a Schema instance
     Source schemaFile = new StreamSource(new File("mySchema.xsd"));
     Schema schema = factory.newSchema(schemaFile);

     // create a Validator instance, which can be used to validate an instance document
     Validator validator = schema.newValidator();

     // validate the DOM tree
     try {
         validator.validate(new DOMSource(document));
     } catch (SAXException e) {
         // instance document is invalid!
     }
 

JAXP構文解析APIは、検証APIに統合されています。 アプリケーションは、検証APIを使用してSchemaを作成し、これをDocumentBuilderFactory.setSchema(Schema)およびSAXParserFactory.setSchema(Schema)メソッドを使用してDocumentBuilderFactoryまたはSAXParserFactoryインスタンスに関連付けます。 1つのパーサー・ファクトリでスキーマの設定とsetValidating(true)の呼出しの両方を行わないでください。 前者の技術ではパーサーは新しい検証APIを使用し、後者の技術ではパーサーは自身の内部検証機能を使用します。 この2つのオプションを同時に有効にすると、冗長動作またはエラーの原因となります。

導入されたバージョン:
1.5