| Module: MEI |
| Module: MEI.shared |
| Module: MEI.header |
| Module: MEI.cmn |
| Module: MEI.analysis |
| Module: MEI.cmnOrnaments |
| Module: MEI.critapp |
| Module: MEI.edittrans |
| Module: MEI.facsimile |
| Module: MEI.figtable |
| Module: MEI.frbr |
| Module: MEI.harmony |
| Module: MEI.linkalign |
| Module: MEI.lyrics |
| Module: MEI.namesdates |
| Module: MEI.performance |
| Module: MEI.ptrref |
| Module: MEI.text |
| Module: MEI.usersymbols |
| Module: |
| <mei> | | [#Check_ID] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:mei">
<sch:assert test="exists(./@xml:id)"> Every document needs to have
an xml:id. </sch:assert></sch:rule></constraint> |
|
| <surface> | | [#Check_surface] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:surface">
<sch:assert test="exists(./@xml:id)"> Every surface needs to have an
xml:id. </sch:assert></sch:rule></constraint> |
|
| <graphic> | | [#Check_graphic] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:graphic[@type eq 'facsimile']">
<sch:assert test="exists(./@xml:id)"> Every graphic needs to have an
xml:id. </sch:assert>
<sch:assert test="exists(./@target)"> Every graphic needs a
reference to an image. </sch:assert></sch:rule></constraint> |
|
| <zone> | | [#Check_zone] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:zone">
<sch:assert test="exists(./@xml:id)"> Every zone needs to have an
xml:id. </sch:assert>
<sch:assert test="exists(./@ulx)"> Every zone needs an upper left x
(@ulx) value. </sch:assert>
<sch:assert test="exists(./@uly)"> Every zone needs an upper left y
(@uly) value. </sch:assert>
<sch:assert test="exists(./@lrx)"> Every zone needs a lower right x
(@lrx) value. </sch:assert>
<sch:assert test="exists(./@lry)"> Every zone needs a lower right y
(@lry) value. </sch:assert>
<sch:assert test="exists(@data) and starts-with(@data,'#') and local-name(id(substring(@data,2)))
eq @type"> The reference to the data element seems broken, as its
local-name() doesn't match the @type of the zone. </sch:assert></sch:rule></constraint> |
|
| <mdiv> | | [#Check_mdiv] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:mdiv">
<sch:assert test="exists(./@xml:id)"> Every mdiv needs an xml:id. </sch:assert>
<sch:assert test="exists(./@label) and string-length(./@label) gt 0"> Every mdiv needs a label with a length of at least one
character. </sch:assert></sch:rule></constraint> |
|
| <measure> | | [#Check_measure] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:measure">
<sch:assert test="exists(./@xml:id)"> A measure needs an xml:id. </sch:assert>
<sch:assert test="not(exists(@facs)) or (every $i in tokenize(@facs, ' ') satisfies
starts-with($i, '#') and id(substring($i, 2))[(local-name() eq 'zone')
and (@type eq 'measure')])"> Every space-separated value in @facs must point to a zone of
type measure. </sch:assert></sch:rule></constraint> |
|
| <staff> | | [#Check_staffFacs] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:staff[@facs]">
<sch:assert test="every $i in tokenize(@facs, ' ') satisfies starts-with($i, '#') and
id(substring($i, 2))[(local-name() eq 'zone') and (@type eq 'staff')]"> Every space-separated value in @facs must point to a zone of
type staff. </sch:assert></sch:rule></constraint> |
|
| <layer> | | [#Check_layer] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:layer">
<sch:assert test="not(exists(./mei:mRest)) or (./mei:mRest and count(./child::*) eq
1)"> If there is a mRest child, no other elements are allowed. </sch:assert>
<sch:assert test="not(exists(./mei:multiRest)) or (./mei:multiRest and count(./child::*)
eq 1)"> If there is a multiRest child, no other elements are allowed.
</sch:assert></sch:rule></constraint> |
|
| <music> | | [#Check_groups] | <constraint
xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="mei:music">
<sch:assert test="not(exists(./mei:group))"> In Edirom, music may
not contain groups. </sch:assert></sch:rule></constraint> |
|
| <source> |
<rng:zeroOrMore>
<rng:ref name="model.identifierLike"/>
</rng:zeroOrMore>
<rng:optional>
<rng:ref name="titleStmt"/>
</rng:optional>
<rng:ref name="macro.bibldescPart"/>
<rng:optional>
<rng:ref name="contents"/>
</rng:optional>
<rng:optional>
<rng:ref name="history"/>
</rng:optional>
<rng:optional>
<rng:ref name="langUsage"/>
</rng:optional>
<rng:optional>
<rng:ref name="notesStmt"/>
</rng:optional>
<rng:optional>
<rng:ref name="classification"/>
</rng:optional>
<rng:optional>
<rng:ref name="itemList"/>
</rng:optional>
<rng:optional>
<rng:ref name="componentGrp"/>
</rng:optional>
<rng:optional>
<rng:ref name="relationList"/>
</rng:optional> |
|
| <relatedItem> | |