W3C home > Mailing lists > Public > xmlschema-dev@w3.org > October 2006

RE: mixing childs in any order and any quantity

From: Fermín Galán Márquez <fermin.galan@cttc.es>
Date: Fri, 6 Oct 2006 20:51:20 +0200
To: <xmlschema-dev@w3.org>
Message-ID: <000001c6e978$6aeecca0$303d5854@cttc.es>

Hi,

Thank you very much to all who have provided me with feedback and support
(especially to Anne for her XMLSchema fragment :)!

However, I see there isn't a simple workaround for an arbitrary number of
childs of <book>. When the number of childs of <book> increases (in the
example that I describe in my first mail only has three -<author>, <title>
and <chapter>- to keep the description simple, but my real application has
14 childs, 6 of them multiple -like <chapter>), complexity increases
exponentially... A similar problem happends with DTD.

Therefore, I'm afraid I will have to use "grouping elements" to keep the
XMLSchema simple, that is, adding an additional "nesting step" in <book>.

Best regards,

--------------------
Fermín Galán Márquez
CTTC - Centre Tecnològic de Telecomunicacions de Catalunya
Parc Mediterrani de la Tecnologia, Av. del Canal Olímpic s/n, 08860
Castelldefels, Spain
Room 1.02
Tel : +34 93 645 29 12 
Fax : +34 93 645 29 01
Email address: fermin.galan@cttc.es 

-----Mensaje original-----
De: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org] En
nombre de Fermín Galán Márquez
Enviado el: viernes, 06 de octubre de 2006 11:55
Para: xmlschema-dev@w3.org
Asunto: mixing childs in any order and any quantity

Hi,

I'm trying to define using XML Schema a element which content mixes several
elements, some of then multiple, that can come in any order and I wonder if
even this is possible. 

Let me clarify with a example. Consider a <book> element whose content can
be up to one <title> (minOccurs=0, maxOccurs=1), up to one <author>
(minOccurs=0, maxOccurs=1) and many <chapter> (minOccurs=0,
maxOccurs=unbounded) that comes together, but combining child tags in any
order.

Examples:

<book>
   <title>...</title>
   <chapter>...</chapter>
   <chapter>...</chapter>
   <chapter>...</chapter>
   <author>...</autor>
</book>

<book>
   <title>...</title>
   <author>...</autor>
   <chapter>...</chapter>
   <chapter>...</chapter>
   <chapter>...</chapter>
</book>

How would be the XML Schema definition for such <book> element, please?
Firstly, I though using <xs:all>, but the problem is that it only allows
elements with maxOccurs=1, so it doesn't fit with <chapter> (that has
maxOccurs=unbounded).

Anybody knows a solution or workaround, please? I'm getting crazy reviewing
the XML Schema reference for some solution, but I'm not finding anything ..
Please, any help is very welcome!

Regards,

--------------------
Fermín Galán Márquez
CTTC - Centre Tecnològic de Telecomunicacions de Catalunya Parc Mediterrani
de la Tecnologia, Av. del Canal Olímpic s/n, 08860 Castelldefels, Spain Room
1.02 Tel : +34 93 645 29 12 Fax : +34 93 645 29 01 Email address:
fermin.galan@cttc.es 

PD. Of course I could do something like:

<book>
   <title>...</title>
   <author>...</autor>
   <chapters>
      <chapter>...</chapter>
      <chapter>...</chapter>
      <chapter>...</chapter>
   </chapters>
</book>

and define <book> as a <xs:all> of <title>, <author> and <chapters>, but I
would like to solve the problem without adding the <chapters> "grouping"
element.
Received on Friday, 6 October 2006 18:51:50 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:55 GMT