posts - 431,  comments - 344,  trackbacks - 0

          軟件包 javax.xml.validation

          此包提供了用于 XML 文檔驗(yàn)證的 API。

          請(qǐng)參見:
                    描述

          類摘要
          Schema 不可變的語法存儲(chǔ)表示形式。
          SchemaFactory 創(chuàng)建 Schema 對(duì)象的工廠。
          SchemaFactoryLoader 創(chuàng)建 SchemaFactory 的工廠。
          TypeInfoProvider 此類提供了對(duì) ValidatorHandler 所確定的類型信息的訪問。
          Validator 根據(jù) Schema 檢查 XML 文檔的處理器。
          ValidatorHandler 處理 SAX 流的流驗(yàn)證器。
           

          軟件包 javax.xml.validation 的描述

          此包提供了用于 XML 文檔驗(yàn)證的 API。Validation 是驗(yàn)證 XML 文檔是否為指定 XML schema 的實(shí)例的過程。XML 模式定義了其實(shí)例文檔將表示的內(nèi)容模式(也稱為 grammarvocabulary)。

          有多種流行的技術(shù)用于創(chuàng)建 XML 模式。最流行的技術(shù)包括:

          • Document Type Definition (DTD) -- XML 的內(nèi)置模式語言。
          • W3C XML Schema (WXS) -- 面向?qū)ο蟮?XML 模式語言。WXS 還提供了用于約束 XML 文檔的字符數(shù)據(jù)的類型系統(tǒng)。WXS 通過 World Wide Web Consortium (W3C) 維護(hù),它是 W3C Recommendation(即公認(rèn)的 W3C 標(biāo)準(zhǔn)規(guī)范)。
          • RELAX NG (RNG) -- 基于模式的、用戶友好的 XML 模式語言。RNG 模式也可以使用類型來約束 XML 字符數(shù)據(jù)。RNG 通過 Organization for the Advancement of Structured Information Standards (OASIS) 維護(hù),它既是 OASIS 標(biāo)準(zhǔn)也是 ISO (International Organization for Standardization) 標(biāo)準(zhǔn)。
          • Schematron -- 基于規(guī)則的 XML 模式語言。相對(duì)于 DTD、WXS 和 RNG 是用于表示內(nèi)容模式的結(jié)構(gòu)而言,Schematron 的設(shè)計(jì)是為了實(shí)施難以或不能通過其他模式語言表示的個(gè)別規(guī)則。Schematron 是為了補(bǔ)充以結(jié)構(gòu)化模式語言(例如 aforementioned)編寫的模式。Schematron 正在成為一項(xiàng) ISO 標(biāo)準(zhǔn)。

          以前的 JAXP 版本支持作為 XML 解析器的功能的驗(yàn)證,要么通過 SAXParser 實(shí)例,要么通過 DocumentBuilder 實(shí)例來表示。

          JAXP 驗(yàn)證 API 從 XML 文檔解析中分離出實(shí)例文檔的驗(yàn)證。這具有幾種優(yōu)點(diǎn),一些原因包括:

          • 支持額外的模式語言。 從 JDK 1.5 開始,兩種最流行的 JAXP 解析器實(shí)現(xiàn)(Crimson 和 Xerces)僅支持可用的 XML 模式語言的子集。Validation API 提供了標(biāo)準(zhǔn)的機(jī)制,應(yīng)用程序通過此機(jī)制可利用支持額外模式語言的規(guī)范驗(yàn)證庫(kù)。
          • 簡(jiǎn)單的 XML 實(shí)例與模式的運(yùn)行時(shí)耦合。 指定要用于通過 JAXP 解析器驗(yàn)證的模式位置可能易于混淆。Validation API 使此過程變得簡(jiǎn)單(參見以下示例)。

          用例以下示例演示了通過 Validation API 驗(yàn)證 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 已經(jīng)與驗(yàn)證 API 進(jìn)行了集成。應(yīng)用程序可以通過驗(yàn)證 API 創(chuàng)建 Schema,并通過使用 DocumentBuilderFactory.setSchema(Schema)SAXParserFactory.setSchema(Schema) 方法將其與 DocumentBuilderFactorySAXParserFactory 實(shí)例進(jìn)行關(guān)聯(lián)。您不能既設(shè)置模式,又調(diào)用解析器工廠上的 setValidating(true)。前者的技術(shù)將導(dǎo)致解析器使用新的驗(yàn)證 API,后者將導(dǎo)致解析器使用它們自己的內(nèi)部驗(yàn)證工具。同時(shí)調(diào)整這兩個(gè)選項(xiàng)將導(dǎo)致冗余行為或錯(cuò)誤條件。

          posted on 2008-03-07 11:03 周銳 閱讀(559) 評(píng)論(1)  編輯  收藏 所屬分類: ApacheJava
          主站蜘蛛池模板: 台北县| 永寿县| 达尔| 响水县| 黔南| 长沙县| 晋城| 涟水县| 开江县| 安西县| 河东区| 大城县| 临安市| 婺源县| 乌拉特后旗| 邵阳县| 周口市| 长兴县| 西丰县| 藁城市| 望都县| 开远市| 淅川县| 南陵县| 山阳县| 乌兰县| 鄱阳县| 福贡县| SHOW| 崇仁县| 盐边县| 鲜城| 桓台县| 威远县| 思南县| 日喀则市| 靖远县| 清苑县| 洪洞县| 怀仁县| 乌鲁木齐县|