<sch:rule context="@decls">
<sch:assert role="warning" test="not(normalize-space(.) eq '')">@decls attribute
should have content.</sch:assert>
<sch:assert role="warning" test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[ancestor::mei:meiHead]/@xml:id">Each value in @decls should correspond to the @xml:id attribute of an element
within the metadata header.</sch:assert>
<sch:assert test="every $i in tokenize(., '\s+') satisfies not(substring($i,2)=//mei:term/@xml:id)">No value in @decls should correspond to the @xml:id attribute of a classification
term. Use @class for this purpose.</sch:assert>
</sch:rule>
<classSpec ident="att.metadataPointing" module="MEI.shared" type="atts">
<desc>Provides attributes for elements which may be associated with particular contextual
elements within the header.</desc>
<attList org="group">
<attDef ident="decls" usage="opt">
<desc>Identifies one or more metadata elements (other than classification terms) within
the
header, which are understood to apply to the element bearing this attribute and its
content.</desc>
<constraintSpec ident="check_declsTarget" scheme="isoschematron">
<constraint>
<sch:rule context="@decls">
<sch:assert role="warning" test="not(normalize-space(.) eq '')">@decls attribute
should have content.</sch:assert>
<sch:assert role="warning" test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[ancestor::mei:meiHead]/@xml:id">Each value in @decls should correspond to the @xml:id attribute of an element
within the metadata header.</sch:assert>
<sch:assert test="every $i in tokenize(., '\s+') satisfies not(substring($i,2)=//mei:term/@xml:id)">No value in @decls should correspond to the @xml:id attribute of a classification
term. Use @class for this purpose.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</attDef>
</attList>
</classSpec>