<sch:rule context="mei:*[@comptype]">
<sch:let name="elementName" value="local-name()"/>
<sch:assert test="ancestor::mei:componentList">The comptype attribute may occur on
<sch:value-of select="$elementName"/> only when it is a descendant of a
componentList.</sch:assert>
</sch:rule>
<classSpec ident="att.componentType" module="MEI.msDesc" type="atts">
<desc>Attributes that express the relationship between a component and its host.</desc>
<attList org="group">
<attDef ident="comptype" usage="opt">
<constraintSpec ident="checkComponentType" scheme="isoschematron">
<constraint>
<sch:rule context="mei:*[@comptype]">
<sch:let name="elementName" value="local-name()"/>
<sch:assert test="ancestor::mei:componentList">The comptype attribute may occur on
<sch:value-of select="$elementName"/> only when it is a descendant of a
componentList.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<valList type="closed">
<valItem ident="constituent">
<desc>A physical and logical part of entity.</desc>
</valItem>
<valItem ident="boundwith">
<desc>A physical, but not logical component of the entity, usually included as part of
the binding process.</desc>
</valItem>
<valItem ident="separated">
<desc>A logical component of the entity physically held elsewhere.</desc>
</valItem>
</valList>
</attDef>
</attList>
</classSpec>