<xs:element name="classification-item" type="classification-item-type">
<xs:annotation>
<xs:appinfo>
<sch:pattern name="Validate level attribute against tree">
<sch:rule context="classification-item[@level]">
<sch:assert test="attribute::level = count(ancestor::classification-item)+/class-scheme/classification-item[1]/attribute::level" diagnostics="Description_1">@level=
<value-of select="count(ancestor::classification-item)+/class-scheme/classification-item[1]/attribute::level"/>expected for
<name/>
<value-of select="child::classification-symbol"/>! ***</sch:assert>
<sch:report test="attribute::level != count(ancestor::classification-item)+/class-scheme/classification-item[1]/attribute::level and preceding-sibling::classification-item[1]" diagnostics="Description_2">@level=
<value-of select="count(ancestor::classification-item)+/class-scheme/classification-item[1]/attribute::level"/>expected for
<name/>
<value-of select="child::classification-symbol"/>!***</sch:report>
</sch:rule>
</sch:pattern>
<sch:diagnostics>
<sch:diagnostic id="Description_1">:
<value-of select="child::classification-symbol"/>[@level=
<value-of select="@level"/>] is a child of
<value-of select="parent::classification-item/classification-symbol"/>[@level=
<value-of select="parent::classification-item/attribute::level"/>] ***</sch:diagnostic>
<sch:diagnostic id="Description_2">:
<value-of select="child::classification-symbol"/>[@level=
<value-of select="@level"/>] follows
<value-of select="preceding-sibling::*[1]/classification-symbol"/>[@level=
<value-of select="preceding-sibling::*[1]/attribute::level"/>] and is a child of
<value-of select="parent::classification-item/classification-symbol"/>[@level=
<value-of select="parent::classification-item/attribute::level"/>] ***</sch:diagnostic>
</sch:diagnostics>
</xs:appinfo>
</xs:annotation>
</xs:element> |