xmllint是否正确处理可为零的compexType?
我们有在.NET下创建的XSD和示例XML(可能通过了验证),但它们无法在xmllint下验证。我们试图确定其中一方是否“不正确”,或者这是否是规范中模棱两可的内容。我尝试在这里和谷歌上搜索,但找不到任何描述相同问题的内容。我没有发布原始的xsd&XML,而是创建了一个更小的测试来重现这个问题 XSD是:xmllint是否正确处理可为零的compexType?,xml,xsd,xmllint,Xml,Xsd,Xmllint,我们有在.NET下创建的XSD和示例XML(可能通过了验证),但它们无法在xmllint下验证。我们试图确定其中一方是否“不正确”,或者这是否是规范中模棱两可的内容。我尝试在这里和谷歌上搜索,但找不到任何描述相同问题的内容。我没有发布原始的xsd&XML,而是创建了一个更小的测试来重现这个问题 XSD是: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLS
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:complexType name="A">
<xs:sequence>
<xs:element name="B" nillable="true" type="B" />
</xs:sequence>
</xs:complexType>
<xs:element name="A" nillable="true" type="A" />
<xs:complexType name="B">
<xs:sequence>
<xs:element name="date"
minOccurs="1"
maxOccurs="50"
nillable="true"
type="xs:date" />
</xs:sequence>
</xs:complexType>
<xs:element name="B" nillable="true" type="B" />
</xs:schema>
xmllint的输出为:
test.xml:3: element B: Schemas validity error : Element 'B': Missing child element(s). Expected is ( date ).
test.xml fails to validate
我基本上是一个XSD/XML“开发人员”的初学者,所以请随意翻阅。:) 您显示的XML实例是针对您显示的XSD模式有效的模式。Xerces J是这样说的,MSV是这样说的,萨克森也是这样说的,我也是这样说的 xmllint中的XSD支持是不完整的;看起来这是一个不完整的领域
(顺便说一句,把问题简化为一个小测试用例做得很好。做得好!)您显示的XML实例与您显示的XSD模式相比是有效的模式。Xerces J是这样说的,MSV是这样说的,萨克森也是这样说的,我也是这样说的 xmllint中的XSD支持是不完整的;看起来这是一个不完整的领域
(顺便说一句,把问题简化为一个小测试用例做得很好。做得好!)由于您的回答,我决定更深入地研究我正在使用的xmllint版本。在此之前,我在CentOS5(libxml2的v2.6.26)和CentOS6(v2.7.6)上都遇到了相同的错误,所以我没有把它当作一个bug。我下载并编译了最新版本(v2.9.1),它通过了测试。再次感谢!关于2.9.1的好消息。由于您的回答,我决定更深入地研究我正在使用的xmllint版本。在此之前,我在CentOS5(libxml2的v2.6.26)和CentOS6(v2.7.6)上都遇到了相同的错误,所以我没有把它当作一个bug。我下载并编译了最新版本(v2.9.1),它通过了测试。再次感谢!关于2.9.1的好消息。
xmllint --schema test.xsd --noout test.xml
test.xml:3: element B: Schemas validity error : Element 'B': Missing child element(s). Expected is ( date ).
test.xml fails to validate