XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
When maxOccurs=1 means an unbounded number of occurrences is valid

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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS