Проблема проверки XML

Я пытаюсь проверить XML на соответствие XSD с помощью команды Unix «xmllint». Проблема, с которой я сталкиваюсь, заключается в следующем:

В 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>

OR

ТИП 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 или без него?

Большое спасибо.


person Bhushan    schedule 02.04.2012    source источник


Ответы (1)


Попробуйте эту схему, 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.

person Petru Gardea    schedule 02.04.2012