Please let me illustrate my point with the following XML Schema (1.1) example:
XML Schema document:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="X">
<xs:complexType>
<xs:sequence>
<xs:any processContents="skip" minOccurs="3" maxOccurs="3"/>
</xs:sequence>
<xs:attribute name="y1" type="xs:string"/>
<xs:attribute name="y2" type="xs:string"/>
<xs:attribute name="y3" type="xs:string"/>
<xs:assert test="deep-equal(for $el in * return name($el), for $at in @* return name($at))"/>
</xs:complexType>
</xs:element>
</xs:schema>
This schema document says following:
1) A wild-card requires 3 element nodes.
2) There are 3 attribute nodes, of same cardinality as the elements.
3) The <assert> says that, name of elements validated by wild-cards must be same as the names of attributes.
Here's a valid XML document for the above schema document:
<?xml version="1.0" encoding="UTF-8"?>
<X y1="A" y2="B" y3="C">
<y1>A</y1>
<y2>B</y2>
<y3>C</y3>
</X>
Reference to XPath 2.0 language (for <assert> path expressions) : https://www.w3.org/TR/xpath20/.
I hope this example is useful.
No comments:
Post a Comment