I am reading a Request for Comments (RFC). The RFC says that Name must occur *1 times, where *1 is defined as “Exactly one instance MAY be present.” I interpret that to mean minOccurs=0 and maxOccurs=1. So, this is valid because there is only one occurrence: <Name>Boss</Name> This is invalid because there is more than one occurrence: <Name>Boss</Name> However, things aren’t so simple…… In fact, this is valid: <Name altid=”1” lang=”en”>Boss</Name> Those two occurrences represent the same logical thing -- they are both expressing the same name in English and French. In effect, there is just one occurrence! Per the RFC:
Two elements are considered alternative representations of the same logical thing if the value of their altid attributes are identical.
How to declare Name in an XML Schema? Answer: Set maxOccurs="unbounded" like so:
<xs:element
name="Name"
minOccurs="0"
maxOccurs="unbounded"
type="Name-Type"/> Then supplement with a Schematron rule which expresses this constraint: The Name element may occur more than once only if all occurrences have an altid
attribute and their values are identical. Neat! /Roger |