2011年计算机二级考试JAVA知识点整理(75)

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  3.3 Java 语言的 XML 验证 API

  检查文档是否遵循了模式中规定的规则。不同的解析器和工具支持不同的模式语言如 DTD、W3C XML Schema 语言、RELAX NG 和 Schematron。Java 5™ 增加了统一的验证应用程序编程接口(API),可以把文档和用这种或那种语言编写的模式作比较。了解这种 XML 验证 API。

  验证是一种强大的工具。它可以快速检查输入是否大体上符合预期的形式,立刻拒绝与处理目标相距甚远的文档。如果数据中存在问题,早发现要比晚发现好。

  对于可扩展标记语言(XML)来说,验证一般意味着用各种模式语言为文档内容编写详细的规范,这些语言包括万维网联盟(W3C)的 XML Schema Language (XSD)、RELAX NG、文档类型定义(DTD)和 Schematron 等。有时候验证在解析的同时进行,有时候在解析完成后立刻进行。但一般在对输入的其他处理之前完成。(这一段描述只是粗略来说,因为存在例外。)

  直到最近,程序请求验证的具体应用程序编程接口(API)还随着模式语言和解析器的不同而不同。DTD 和 XSD 是 Simple API for XML (SAX)、文档对象模型(DOM)和 Java™ API for XML Processing (JAXP) 常见的配置选项。RELAX NG 需要自定义的库和 API。Schematron 可以使用 Transformations API for XML(TrAX),还有其他模式也要求程序员学习更多的 API,尽管执行的操作基本相同。

  Java 5 引入了 javax.xml.validation 包,提供了独立于模式语言的验证服务接口。这个包也可用于 Java 1.3 及更高版本,不过要单独安装 JAXP 1.3。其他产品中,Xerces 2.8 包含了这个库的实现。

  验证

  javax.xml.validation API 使用三个类来验证文档:SchemaFactory、Schema 和 Validator。还大量使用了 TrAX 的 javax.xml.transform.Source 接口来表示 XML 文档。简言之,SchemaFactory 读取模式文档(通常是 XML 文件)并创建 Schema 对象。Schema 创建一个 Validator 对象。最后,Validator 对象验证表示为 Source 的 XML 文档。

  清单 1 显示了一个简单的程序,用 DocBook XSD 模式验证在命令行中输入的 URL。

  清单 1. 验证可扩展超文本标记语言(XHTML)文档

  import java.io.*;

  import javax.xml.transform.Source;

  import javax.xml.transform.stream.StreamSource;

  import javax.xml.validation.*;

  import org.xml.sax.SAXException;

  public class DocbookXSDCheck {

  public static void main(String[] args) throws SAXException, IOException {

  // 1. Lookup a factory for the W3C XML Schema language

  SchemaFactory factory =

  SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

  // 2. Compile the schema.

  // Here the schema is loaded from a java.io.File, but you could use

  // a java.net.URL or a javax.xml.transform.Source instead.

  File schemaLocation = new File("/opt/xml/docbook/xsd/docbook.xsd");

  Schema schema = factory.newSchema(schemaLocation);

  // 3. Get a validator from the schema.

  Validator validator = schema.newValidator();

  // 4. Parse the document you want to check.

  Source source = new StreamSource(args[0]);

  // 5. Check the document

  try {

  validator.validate(source);

上一页123456下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答