<sch:rule context="mei:contributor">
<sch:assert test="not(matches(normalize-space(lower-case(@role)), '(arranger|author|composer|contributor|editor|funder|librettist|lyricist|sponsor)'))">The value of @role must not contain the name of another element available in this
context.</sch:assert>
</sch:rule>
<elementSpec ident="contributor" module="MEI.shared">
<desc>Names of individuals, institutions, or organizations responsible for contributions
to the
intellectual content of a work, where the specialized elements for authors, editors,
etc. do
not suffice or do not apply.</desc>
<classes>
<memberOf
key="att.common"/>
<memberOf
key="att.bibl"/>
<memberOf
key="att.evidence"/>
<memberOf
key="att.facsimile"/>
<memberOf
key="att.lang"/>
<memberOf
key="model.respLikePart"/>
</classes>
<content>
<rng:zeroOrMore>
</rng:zeroOrMore>
</content>
<constraintSpec ident="check_contributor_role" scheme="isoschematron">
<constraint>
<sch:rule context="mei:contributor">
<sch:assert test="not(matches(normalize-space(lower-case(@role)), '(arranger|author|composer|contributor|editor|funder|librettist|lyricist|sponsor)'))">The value of @role must not contain the name of another element available in this
context.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<attList org="group">
<attDef ident="role" usage="rec">
<desc>Used to specify the contributor's function.</desc>
<datatype maxOccurs="1" minOccurs="1">
<rng:text/>
</datatype>
<remarks>
<p part="N">When applicable, values from the MARC relator term list (
<ref target="http://www.loc.gov/marc/relators/relaterm.html">http://www.loc.gov/marc/relators/relaterm.html</ref>) or code list (
<ref target="http://www.loc.gov/marc/relators/relacode.html">http://www.loc.gov/marc/relators/relacode.html</ref>) are recommended for
<att scheme="TEI">role</att>.</p>
</remarks>
</attDef>
</attList>
</elementSpec>