3

我正在尝试使用 Unix 的“xmllint”命令针对 XSD 验证 XML。我面临的问题是:

在 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 中,状态字段是这样的:

类型 1:

        <state>
            FL
        </state>

或者

类型 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 的情况下做到这一点?

非常感谢。

4

1 回答 1

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

于 2012-04-02T22:57:26.920 回答