I am having problem when validating the following XML Schema file. It shows me that the xpath is not valid. In the assert test I want to check if the value of BOID=OID then A_Membership_Degree is greater or equal to B_Membership_Degree.
<xs:schema xmlns:xs="http://ift.tt/tphNwY"
xmlns:vc="http://ift.tt/REsXlC"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
vc:minVersion="1.1">
<xs:element name="Document">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="A" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="B" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="C" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:assert
test="if(.//@OID eq .//@BOID)
then ./A/@A_Membership_Degree
ge ./B/@A_Membership_Degree"/>
</xs:complexType>
<xs:key name="aKey">
<xs:selector xpath="A"/>
<xs:field xpath="@OID"/>
</xs:key>
<xs:keyref name="aKeyRef" refer="aKey">
<xs:selector xpath="./B"/>
<xs:field xpath="@BOID"/>
</xs:keyref>
<xs:keyref name="aKeyRef1" refer="aKey">
<xs:selector xpath="./C"/>
<xs:field xpath="@COID"/>
</xs:keyref>
</xs:element>
<xs:element name="A" type="Atype"/>
<xs:complexType name="Atype">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="A1" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="A2" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="OID" type="xs:string" use="required"/>
<xs:attribute name="A_Membership_Degree" type="FuzzyValue" use="optional"/>
<xs:attribute name="D_Membership_Degree" type="FuzzyValue" use="optional"/>
</xs:complexType>
<xs:element name="B" type="Btype"/>
<xs:complexType name="Btype">
<xs:sequence>
<xs:element name="B1" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="B2" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="BOID" type="xs:string" use="required"/>
<xs:attribute name="B_Membership_Degree" type="FuzzyValue" use="optional"/>
</xs:complexType>
<xs:element name="C" type="Ctype"/>
<xs:complexType name="Ctype">
<xs:sequence>
<xs:element name="C1" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="C2" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="COID" type="xs:string" use="required"/>
<xs:attribute name="C_Membership_Degree" type="FuzzyValue" use="required"/>
</xs:complexType>
<xs:simpleType name="FuzzyValue">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Thanks very much for your help Reema
No comments:
Post a Comment