QT:XML Schema验证XSD,断言

时间:2012-10-24 10:57:46

标签: xml qt xsd qt4 qtxml

我想使用QXmlSchema来使用XSD 1.1的断言功能。

如果使用以下xsd进行测试:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="root">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="node1">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:integer">
                        <xsd:minInclusive value="0"/>
                        <xsd:maxInclusive value="100"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="node2">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="x" type="xsd:int"/>
                        <xsd:element name="y" type="xsd:int"/>
                    </xsd:sequence>
                    <xsd:assert test="x+ y=0"/>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

以及以下xml:

<root>
    <node1>1</node1>
    <node2>
          <x>1</x>
          <y>3</y>
    </node2>
</root>

现在,以下代码片段返回有效的架构和xml数据,即使断言应该为false。

 QXmlSchema schema;
 schema.load(schemaData);
 schema.isValid(); // true <=====
 QXmlSchemaValidator validator(schema);
 validator.validate(xmlData)); //true <=====

知道为什么吗? 是因为Qs中没有实现Xsd 1.1吗? 如果是这样,为什么模式被认为是有效的?

0 个答案:

没有答案