[英]validate an XML schema against XMLSchema.xsd
我正在尝试针对XMLSchema.xsd验证最简单的XSD文件:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a" type="xs:int"/>
</xs:schema>
为此,我下载了XMLSchema.xsd文件并将其传递给org.w3c.dom.ls.LSResourceResolver
以确保使用了本地提供的XMLSchema.XSD
,而不是通过Internet获取的XMLSchema.XSD
。 该代码在我的类路径中与Saxon-HE-9.4.jar
一起运行。
但是,此操作失败:
org.xml.sax.SAXParseException; cvc-elt.1:找不到元素'xs:schema'的声明。
它似乎与先前的消息有关(由我的自定义LSResourceResolver
子类发出):
无法读取架构文档“ [...] XMLSchema.xsd”,因为1)找不到文档; 2)无法读取文件; 3)文档的根元素不是<xsd:schema>。
但是,当我注释掉XMLSchema.XSD
文件中的整个DOCTYPE
部分时,它就起作用了。
我想这意味着解析器无法处理XMLSchema.xsd
的DOCTYPE
和ATTLIST
子句。
所以我有两个问题:
XMLSchema.xsd
XML序言? 并且有什么方法可以解决此问题而无需编辑XMLSchema.xsd
文件? XMLSchema.xsd
文件,所以我不必手动进行编辑。 一个简单的wget
也会获取XML序言(使用浏览器访问链接时不会显示BTW)。 这确实太大了,无法提供SSCCE,但是如果有人想看看,我将提供带有测试用例的github存储库。
如果对XMLSchema.dtd的引用失败,那么一种显而易见的解决方案(除了注释掉已经找到的DOCTYPE声明之外)将是下载DTD文件(XMLSchema.dtd和datatypes.dtd)并提供它们本地也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.