javax.xml.validation パッケージ内のクラスは、XML の妥当性検証を行うためのクラス群が定義されています。 妥当性検証に用いることができるスキーマ言語は、デフォルトでは W3C XML Schema のみです(Java SE 6 現在)。
妥当性検証を行う方法には、以下のものがあります:
- SAXParser, DocumentBuilder の処理時に妥当性検証を行う
- Validator オブジェクトを用いて妥当性検証を行う
- ValidatorHandler オブジェクトを用いて妥当性検証を行う
javax.xml.validation.Schema オブジェクトの取得
上記のどの方法を用いる場合でも、まず Schema オブジェクトを取得する必要があります。 ただし、Schema クラスを直接コンストラクタでインスタンス化することはできません。 Schema オブジェクトの取得には、以下の手順を踏みます*1:
- static メソッド SchemaFactory#newInstance(String) によって SchemaFactory オブジェクトを取得する
- インスタンスメソッド SchemaFactory#newSchema(Source) によって Schema オブジェクトを取得する
具体的には、"test.xsd" というファイルに W3C XML Schema を用いてスキーマ定義が書かれている場合、
import javax.xml.XMLConstants; import javax.xml.transform.stream.StreamSource; ... // 1. SchemaFactory オブジェクトを取得する SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); //2. Schema オブジェクトを取得する Schema schema = factory.newSchema(new StreamSource("test.xsd"));
のようにします。 幾つか注意を: