【问题标题】:How is the XML document validated against an XSD or DTD document?如何根据 XSD 或 DTD 文档验证 XML 文档?
【发布时间】:2019-10-25 07:42:08
【问题描述】:

我正在尝试掌握 XML 验证的原理。有一点我还没有明白:负责根据其指定的 XSD(或 DTD)定义实际验证 XML 文档的过程是什么?

我想知道这是操作系统默认提供的,还是我们使用的编辑器(例如Oxygen IDE)完成的? 感谢您提供有用的说明。

【问题讨论】:

    标签: xml xsd dtd


    【解决方案1】:

    我想知道是否

    这是操作系统默认提供的,

    没有。

    还是由我们使用的编辑器完成(比如 Oxygen IDE)?

    也没有。

    这是由验证 XML 处理器完成的。
    (当然,它可以集成到像 Oxygen 这样的 IDE 中)。
    一种验证 XML/XSLT 处理器是the commercial edition of Saxon: SAXON EE

    Saxonica 的商业企业版,支持 XSLT 3.0、XPath 2.0 和 3.1、XQuery 3.1、XML Schema 1.0 和 1.1 以及 XQuery Update 1.0。

    另一种可能性是使用 Xerces,一个开源验证解析器 described in this SO answer

    【讨论】:

      【解决方案2】:

      Oxygen 使用 Apache Xerces/J (Java) XML 套件针对 DTD 或 XSD 解析和验证 XML(参见例如https://www.oxygenxml.com/forum/topic15534.html)。最有可能的是,Apache Xerces 是经过大量定制和扩展的,并使用额外的 JAXP 组件在 Oxygen 中使用,例如用于交互式编辑的 DTD 和 XSD 元数据,以及针对 RNG 进行验证等。

      【讨论】:

        【解决方案3】:

        在 DTD 验证的情况下,验证过程始终与 XML 解析密切相关;许多 XML 解析器可以选择打开或关闭验证,如果打开,解析器将检索 DTD 并根据它验证实例,通常在解析过程中“即时”进行。

        XML 解析器可能随您的编程语言(例如 Java、C#、Python)提供,或者它们可能是独立的第三方库。有些可能与操作系统捆绑在一起,但它们实际上并不是操作系统的一部分。

        在 XSD 模式验证的情况下,验证器可能被捆绑为上述 XML 解析器的一部分,或者它可能是一个单独的组件。因此解析器可以选择在解析期间即时调用模式验证,或者可能有一个独立的验证实用程序。例如,在 Java 世界中,Xerces 解析器具有调用 XSD 验证的选项,但 Saxon 中也有一个模式验证器,它包括 XSLT 和 XQuery 处理,但本身不进行 XML 解析。

        oXygen 和 Altova XMLSpy 等交互式开发环境(“编辑器”)通常包含 XSD 模式验证器;这可能是他们自己开发的产品(Altova)或他们集成的第三方产品(oXygen 允许您在 Xerces 和 Saxon 验证器之间进行选择)。

        【讨论】:

          猜你喜欢
          • 2010-12-12
          • 2016-10-19
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 2010-10-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多