模块  java.xml

Package javax.xml.validation

提供用于验证XML文档的API。 验证是验证XML文档是指定XML 模式的实例的过程。 XML模式定义其实例文档将表示的内容模型(也称为语法词汇表 )。

有许多流行的技术可用于创建XML模式。 一些最受欢迎的包括:

虽然JAXP支持验证作为XML解析器的一个功能,由SAXParserDocumentBuilder实例表示,但首选Validation API。

JAXP验证API将实例文档的验证与XML文档的解析分离。 这有几个原因有利,其中一些原因是:

  • 支持其他架构语言。 JAXP解析器实现仅支持可用XML模式语言的子集。 Validation API提供了一种标准机制,通过该机制,应用程序可以利用支持其他模式语言的专门化验证库。
  • 轻松运行时耦合XML实例和模式。 指定用于使用JAXP解析器进行验证的模式的位置可能会令人困惑。 Validation API使此过程变得简单(参见下面的example )。

Usage example.以下示例演示如何使用Validation 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已与Validation API集成。 应用程序可以使用验证API创建Schema ,并使用DocumentBuilderFactory.setSchema(Schema)SAXParserFactory.setSchema(Schema)方法将其与DocumentBuilderFactorySAXParserFactory实例关联 您不应该同时设置架构并在解析器工厂上调用setValidating(true) 前一种技术将导致解析器使用新的验证API; 后者将导致解析器使用自己的内部验证工具。 同时打开这两个选项将导致冗余行为或错误情况。

从以下版本开始:
1.5