我正在尝试使用' xmllint'来针对XSD验证XML。 Unix的命令。我面临的问题是:
在XSD中,字段" state
"指定如下:
<xs:element name="state">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
请注意 <xs:maxLength value="2"/>
在XML中,state字段如下:
TYPE 1:
<state>
FL
</state>
OR
TYPE 2:
<state>FL</state>
对于TYPE 1,我收到以下错误:
test.xml:243: element state: Schemas validity error : Element 'state': [facet 'maxLength'] The value has a length of '32'; this exceeds the allowed maximum length of '2'.
test.xml:243: element state: Schemas validity error : Element 'state': '
FL
' is not a valid value of the local atomic type.
对于TYPE 2,它可以正常运行而不会出现任何错误。
因此,格式化XML中的空格基本上都会导致问题。我希望XML能够传递给两种情况。有或没有xmllint有没有办法做到这一点?
非常感谢。
答案 0 :(得分:4)
尝试此架构,QTAssistant验证您的XML,我相信您的验证器也应该:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="state">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
技巧是whiteSpace子句。