QXmlSchema を使用して XSD 1.1 の assert 機能を使用したいと考えています。
次の 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>
次のコード スニペットは、アサートが false である必要がありますが、有効なスキーマと xml データを返します。
QXmlSchema schema;
schema.load(schemaData);
schema.isValid(); // true <=====
QXmlSchemaValidator validator(schema);
validator.validate(xmlData)); //true <=====
理由はありますか?Xsd 1.1がQtに実装されていないためですか?もしそうなら、なぜスキーマが有効であると考えられるのですか?