[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Costello, Roger L." <costello@m...>
  • To: "xml-dev@l..." <xml-dev@l...>
  • Date: Mon, 20 Nov 2017 15:27:33 +0000

Hi Folks,

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>
<Name>Patron</Name>

However, things aren’t so simple……

In fact, this is valid:

<Name altid=”1” lang=”en”>Boss</Name>
<Name altid=”1” lang=”fr”>Patron</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

 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member