我们有在.NET下创建的XSD和示例XML(并且可能通过验证),但它们无法在xmllint下验证。我们试图确定一方或另一方是否“不正确”,或者这是否在规范中有些含糊不清。我试过在这里和谷歌搜索,但找不到任何描述同样问题的东西。而不是发布原始XSD和& XML,我创建了一个较小的测试来重现问题。
XSD是:
<?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>
XML是:
<?xml version="1.0" encoding="UTF-8"?>
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
<B xsi:nil="true"></B>
</A>
xmllint命令运行是:
xmllint --schema test.xsd --noout test.xml
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'开发者',所以请随意撕掉。 :)
答案 0 :(得分:1)
您显示的XML实例对您显示的XSD架构是架构有效的。所以Xerces J说,MSV说,所以撒克逊说,并且(因为它值得)所以说我。
xmllint中的XSD支持已知不完整;看起来这是一个不完整的领域。
(顺便说一下,把问题简化为一个小的测试用例。很好的工作!)