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の場合、エラーなしで正しく有効になります。

したがって、基本的に、formatted-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 に答える