Я хочу ограничить 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>