XML验证问题

时间:2012-04-02 20:52:50

标签: xml xsd xml-validation xsd-validation xmllint

我正在尝试使用' 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有没有办法做到这一点?

非常感谢。

1 个答案:

答案 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子句。