如何用XML Schema限制xml?
问题描述:
我想限制XML模式到一个特定的集合。我阅读本教程如何用XML Schema限制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栏:元件车的内容不匹配其类型定义:字符串内容未在枚举中列出方面..
实例无效
我怀疑这是一个braino。如何用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>
答
问题曾与空白做。如此格式化,它实际上是有效的。但是,如果开始标记,值和结束标记位于不同的行上,则该标记无效。
-jk
+0
这帮了很多! :)(+1) – atamanroman 2011-03-01 09:25:36
您能否显示xsd? – 2010-06-04 23:25:33
看起来像一个xsd问题,而不是一个Qt问题。是的,请向我们展示xsd。 – 2010-06-06 07:53:13
感谢您的意见。 xsd是教程的一部分。希望反引用的作品也可以在评论中转义代码。 ' xs:restriction> xs:simpleType> ' –
John
2010-06-07 13:57:11