繁体   English   中英

如何根据XSD或DTD文档验证XML文档?

[英]How is the XML document validated against an XSD or DTD document?

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

我想知道这是默认提供的操作系统,还是由我们使用的编辑器(如Oxygen IDE)完成的? 感谢您的帮助澄清。

我想知道是否

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

没有。

或者它是由我们使用的编辑器(如Oxygen IDE)完成的?

也没有。

它由验证XML处理器完成。
(当然,这可以集成在像氧气这样的IDE中)。
一个有效的XML / XSLT处理器是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,这是一个在这个SO答案中描述的开源验证解析器

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

在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验证器之间进行选择)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM