软件包 javax.xml.validation
此包提供了用于 XML 文档验证的 API。
请参见:
描述
软件包 javax.xml.validation 的描述
此包提供了用于 XML 文档验证的 API。Validation 是验证 XML 文档是否为指定 XML schema 的实例的过程。XML 模式定义了其实例文档将表示的内容模式(也称为 grammar 或 vocabulary)。
有多种流行的技术用于创建 XML 模式。最流行的技术包括:
以前的 JAXP 版本支持作为 XML 解析器的功能的验证,要么通过 SAXParser
实例,要么通过 DocumentBuilder
实例来表示。
JAXP 验证 API 从 XML 文档解析中分离出实例文档的验证。这具有几种优点,一些原因包括:
- 支持额外的模式语言。 从 JDK 1.5 开始,两种最流行的 JAXP 解析器实现(Crimson 和 Xerces)仅支持可用的 XML 模式语言的子集。Validation API 提供了标准的机制,应用程序通过此机制可利用支持额外模式语言的规范验证库。
- 简单的 XML 实例与模式的运行时耦合。 指定要用于通过 JAXP 解析器验证的模式位置可能易于混淆。Validation API 使此过程变得简单(参见以下示例)。
用例。以下示例演示了通过 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 已经与验证 API 进行了集成。应用程序可以通过验证 API 创建 Schema
,并通过使用 DocumentBuilderFactory.setSchema(Schema)
和 SAXParserFactory.setSchema(Schema)
方法将其与 DocumentBuilderFactory
或 SAXParserFactory
实例进行关联。您不能既设置模式,又调用解析器工厂上的 setValidating(true)
。前者的技术将导致解析器使用新的验证 API,后者将导致解析器使用它们自己的内部验证工具。同时调整这两个选项将导致冗余行为或错误条件。
posted on 2008-03-07 11:03
周锐 阅读(546)
评论(1) 编辑 收藏 所属分类:
Apache 、
Java