如何从命令行使用Saxon根据DTD验证XML
我有一个库Saxon9ee.jar,我想使用带有命令行界面的Saxon9ee根据位于外部文件(而不是XML内部)中的DTD模式验证XML文件。 我发现了如何根据XSD模式验证XML:如何从命令行使用Saxon根据DTD验证XML,xml,command-line,dtd,saxon,Xml,Command Line,Dtd,Saxon,我有一个库Saxon9ee.jar,我想使用带有命令行界面的Saxon9ee根据位于外部文件(而不是XML内部)中的DTD模式验证XML文件。 我发现了如何根据XSD模式验证XML: java -cp saxon9ee.jar com.saxonica.Validate -xsd:<XSD_file> -s:<XML_file> -xsdversion:1.1 java-cp saxon9ee.jar com.saxonica.Validate-xsd:-s:-xsdv
java -cp saxon9ee.jar com.saxonica.Validate -xsd:<XSD_file> -s:<XML_file> -xsdversion:1.1
java-cp saxon9ee.jar com.saxonica.Validate-xsd:-s:-xsdversion:1.1
但是如何对DTD模式文件执行相同的操作呢?对DTD进行验证实际上根本不涉及Saxon,而是在XML解析器中完成的。但奇怪的是,Xerces解析器在命令行接口方面相当差,因此通过Saxon调用它可能是最方便的方法。在启用DTD验证的情况下运行最简单的查询:
java net.sf.saxon.Query -qs:. -s:source.xml -dtd:on
谢谢你的回复。但在您的情况下,验证器如何知道他需要使用DTD模式文件以及使用什么文件呢?这是外部DTD架构文件,XML文件没有链接到它的声明。它会自动应用文件夹中的所有DTD文件吗?如果XML文件没有引用DTD的DOCTYPE声明,我不知道如何根据DTD验证XML文件。您可以将DTD引用重定向到不同的位置,但是如果有一种方法可以从外部提供DTD引用,我不知道。