Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从命令行使用Saxon根据DTD验证XML_Xml_Command Line_Dtd_Saxon - Fatal编程技术网

如何从命令行使用Saxon根据DTD验证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

我有一个库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:-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引用,我不知道。