我想将带有架构的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 Schema限制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>
答案 0 :(得分:1)
问题与空白有关。按照这个格式,它实际上是有效的。但是,如果开始标记,值和结束标记位于不同的行上,则它无效。
-jk