<sch:rule context="@plist">
<sch:assert role="warning" test="not(normalize-space(.) eq '')">@plist attribute
should have content.</sch:assert>
<sch:assert role="warning" test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*/@xml:id">Each
value in @plist should correspond to the @xml:id attribute of an
element.</sch:assert>
</sch:rule>
<classSpec ident="att.plist" module="MEI.shared" type="atts">
<desc>Attributes listing the active participants in a user-defined collection.</desc>
<attList org="group">
<attDef ident="plist" usage="opt">
<desc>When the target attribute is present, plist identifies the active participants; that
is, those entities pointed "from", in a relationship with the specified target(s).
When
the target attribute is not present, it identifies participants in a mutual
relationship.</desc>
<constraintSpec ident="check_plistTarget" scheme="isoschematron">
<constraint>
<sch:rule context="@plist">
<sch:assert role="warning" test="not(normalize-space(.) eq '')">@plist attribute
should have content.</sch:assert>
<sch:assert role="warning" test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*/@xml:id">Each
value in @plist should correspond to the @xml:id attribute of an
element.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</attDef>
</attList>
</classSpec>