The child elements of this element are treated as components of the bibliographic entity containing the componentList. Although this is an implicit way of expressing FRBR's hasPart and isPartOf relationships, it avoids this terminology in order to prevent confusion with musical terminology. Work, expression, and item components must be the same type as the parent of componentList: work children are allowed within work, etc. Manifestations; i.e., sources, may have either source or itemcomponents as required to accommodate composite sources (those containing multiple sources) or multi-part sources (those made up of several physical items.
<sch:rule context="mei:componentList">
<sch:assert test="every $i in ./child::mei:*[not(local-name()='head')] satisfies $i/local-name()
eq ./parent::mei:*/local-name()">Only child elements of the same name as the parent of the componentList are
allowed.</sch:assert>
</sch:rule>
<sch:rule context="mei:componentList[mei:*[@comptype]]">
<sch:assert role="warning" test="count(mei:*[@comptype]) = count(mei:*[local-name() ne 'head'])">When any child
element has a comptype attribute, it is recommended that comptype appear on all child
elements.</sch:assert>
</sch:rule>
<elementSpec ident="componentList" module="MEI.header">
<desc>Container for intellectual or physical component parts of a bibliographic entity.</desc>
<content>
<rng:choice>
<rng:choice>
</rng:choice>
<rng:choice>
</rng:choice>
</rng:choice>
</content>
<constraintSpec ident="checkComponentList" scheme="isoschematron">
<constraint>
<sch:rule context="mei:componentList">
<sch:assert test="every $i in ./child::mei:*[not(local-name()='head')] satisfies $i/local-name()
eq ./parent::mei:*/local-name()">Only child elements of the same name as the parent of the componentList are
allowed.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="checkComponents" scheme="isoschematron">
<constraint>
<sch:rule context="mei:componentList[mei:*[@comptype]]">
<sch:assert role="warning" test="count(mei:*[@comptype]) = count(mei:*[local-name() ne 'head'])">When any child
element has a comptype attribute, it is recommended that comptype appear on all child
elements.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<remarks>
<p part="N">The child elements of this element are treated as components of the bibliographic
entity
containing the
<gi scheme="MEI">componentList</gi>. Although this is an implicit way of
expressing FRBR's hasPart and isPartOf relationships, it avoids this terminology in
order to
prevent confusion with musical terminology. Work, expression, and item components
must be
the same type as the parent of componentList:
<gi scheme="MEI">work</gi> children are
allowed within
<gi scheme="MEI">work</gi>, etc. Manifestations; i.e., sources, may have
either
<gi scheme="MEI">source</gi> or
<gi scheme="MEI">item</gi>components as required to
accommodate composite sources (those containing multiple sources) or multi-part sources
(those made up of several physical items.</p>
</remarks>
</elementSpec>