我正在尝试掌握XML验证的原理。有一点我还没明白:针对XML文档的指定XSD(或DTD)定义实际验证XML文档的过程是什么?
我想知道这是操作系统默认提供的还是由我们使用的编辑器(例如Oxygen IDE)完成的? 感谢您的帮助。
答案 0 :(得分:0)
我想知道
这是操作系统默认提供的
否。
是由我们使用的编辑器(例如Oxygen IDE)完成的?
也没有。
这是由经过验证的XML处理器完成的。
(当然可以将其集成到Oxygen之类的IDE中。)
the commercial edition of Saxon: SAXON EE是一种可验证的XML / XSLT处理器:
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
答案 1 :(得分:0)
Oxygen使用Apache Xerces / J(Java)XML套件针对DTD或XSD解析和验证XML(例如,参见https://www.oxygenxml.com/forum/topic15534.html)。 Apache Xerces很可能是经过高度定制的,并扩展了在Oxygen中使用的其他JAXP组件,例如DTD和XSD元数据以进行交互式编辑以及针对RNG进行验证等。
答案 2 :(得分:0)
对于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验证器之间进行选择)。