軟件包 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
周銳 閱讀(553)
評論(1) 編輯 收藏 所屬分類:
Apache 、
Java