<sch:rule context="@extent[matches(normalize-space(.), '^\d+(\.\d+)?$')]">
<sch:assert role="warning" test="../@unit">The @unit attribute is
recommended.</sch:assert>
</sch:rule>
<sch:rule context="@extent[matches(., '\d+(\.\d+)?\s')]">
<sch:assert role="warning" test="../@unit">Separation into value (@extent) and unit
(@unit) is recommended.</sch:assert>
</sch:rule>
<classSpec ident="att.extent" module="MEI.shared" type="atts">
<desc>Provides attributes for describing the size of an entity.</desc>
<attList org="group">
<attDef ident="extent" usage="opt">
<desc>Captures a measurement, count, or description. When extent contains a numeric value,
use the unit attribute to indicate the measurement unit.</desc>
<datatype maxOccurs="1" minOccurs="1">
<rng:data type="string"/>
</datatype>
<constraintSpec ident="check_extent" scheme="isoschematron">
<constraint>
<sch:rule context="@extent[matches(normalize-space(.), '^\d+(\.\d+)?$')]">
<sch:assert role="warning" test="../@unit">The @unit attribute is
recommended.</sch:assert>
</sch:rule>
<sch:rule context="@extent[matches(., '\d+(\.\d+)?\s')]">
<sch:assert role="warning" test="../@unit">Separation into value (@extent) and unit
(@unit) is recommended.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</attDef>
</attList>
</classSpec>