Как ограничить XML с помощью XML-схемы? - PullRequest
2 голосов
/ 05 июня 2010

Я хочу ограничить xml схемой для определенного набора. Я прочитал этот урок

http://www.w3schools.com/schema/schema_facets.asp

Кажется, это то, что я хочу. Итак, я использую Qt для проверки этого xml

<car>BMW</car>

Вот соответствующий исходный код.

QXmlSchema schema;

schema.load( QUrl("file:///workspace/QtExamples/ValidateXSD/car.xsd") );
if ( schema.isValid() ) {
    QXmlSchemaValidator validator( schema );

    if ( validator.validate( QUrl("file:///workspace/QtExamples/ValidateXSD/car.xml") ) ) {
        qDebug() << "instance is valid";
    } else {
        qDebug() << "instance is invalid";
    }
} else {
    qDebug() << "schema is invalid";
}

Я ожидал, что xml будет соответствовать определению схемы. Неожиданно QxmlSchemaValidator жалуется.

Ошибка XSDError в файле: ///workspace/QtExamples/ValidateXSD/car.xml, строка 1, столбец 5: содержимое элемента car не соответствует определению его типа: содержимое строки не указано в фасете перечисления
экземпляр недействителен

Я подозреваю, что это брейно. Как ограничить XML с помощью XML-схемы?

Вот xsd из учебника:

<xs:element name="car">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Audi"/>
      <xs:enumeration value="Golf"/>
      <xs:enumeration value="BMW"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

1 Ответ

1 голос
/ 08 июня 2010

Проблема была связана с пробелами. Как отформатировано на этом, оно работает. Однако если начальный тег, значение и конечный тег находятся в отдельных строках, это недопустимо.

* 1003-jk *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...