Open koit opened 4 years ago
OK @koit, we simply need to frame the requirements as a set of logical tests. The interaction of Schematron rules can be painful and getting the desired behaviour is often a journey.
more than one structMaps are present because the others must have
@LABEL != 'CSIP'
as described in CSIP section 5.3.6
My understanding here is the opposite and there should always be only one <structMap>
element with @LABEL='CSIP'
and it MUST have the @TYPE='PHYSICAL'
. Other <structMap>
s are welcome to share the @TYPE
but not the @LABEL
which is treated as an id, from Section 5.3.6:
The
<structMap>
element’s@LABEL
attribute is mandatory and must have the value “CSIP”. The@LABEL
attribute distinguishes the CSIP mandated structural maps from other structural maps. NOTE this means that the “CSIP”@LABEL
value should be treated as a unique id and not applied to other<structMap>
elements.
This still means that the tests are wrong, but I need to establish that there is one and only one <structMap>
element with @LABEL='CSIP'
and that it has @TYPE='PHYSICAL'
.
@carlwilson, I think we have exactly the same understanding and I suspect the confusion was caused by my explanation through negatives (i.e. !=
). In sum, I think we need two tests:
@LABEL = 'CSIP'
;@LABEL = 'CSIP'
has @TYPE = 'PHYSICAL'
.No @LABEL
or @TYPE
tests needed for other structMaps, as CSIP does not regulate them and these attributes are optional in METS.
In the Schematron rules for structMap, CSIP82 will fail if more than one structMaps are present because the others must have
@LABEL != 'CSIP'
as described in CSIP section 5.3.6. The same problem will arise with CSIP81 if the other structMaps have@TYPE != 'PHYSICAL'
.