- From: Geoff Elgey <elgey@dstc.qut.edu.au>
- Date: Wed, 27 Jun 2001 15:46:23 +1000
- To: Martin Duerst <duerst@w3.org>
- CC: xmlschema-dev@w3.org
G'day,
Martin Duerst wrote:
> ><complexType name="T">
> ><all minOccurs="0" maxOccurs="unbounded">
> > <element name="x" type="integer"/>
> > <element name="y" type="integer"/>
> > <element name="z" type="integer" minOccurs="0"/>
> ></all>
> ></complexType>
> >
> >So given the following input:
> >
> ><T><x>1</x><y>2</y><z>3</z><z>1</z><y>2</y><x>3</x><y>1</y><x>2</x><y>1</y>
> ><z>2</z></T>
>
> This is a benign example. Just change it to:
>
> <T><x>1</x><y>2</y><z>3</z><y>2</y><x>3</x><y>1</y><x>2</x><y>1</y><z>2</z></T>
>
> Now, does this parse as:
>
> >complexType: T
> >content: list
> > item 1 = <x>1</x><y>2</y><z>3</z>
> > item 2 = <y>2</y><x>3</x>
> > item 3 = <y>1</y><x>2</x>
> > item 4 = <y>1</y><z>2</z> <== error: missing element 'x'
>
> or as:
>
> >complexType: T
> >content: list
> > item 1 = <x>1</x><y>2</y>
> > item 2 = <z>3</z><y>2</y><x>3</x>
> > item 3 = <y>1</y><x>2</x>
> > item 4 = <y>1</y><z>2</z> <== error: missing element 'x'
>
> No way to decide, I guess.
I've already found this ambiguity, and I guess that shoots down any
reason I have for using <all> with maxOccurs > 1.
> > > > So your options are either
> > > >
> > > > - stick to W3C XML Schema and make a compromise by using (a|b)* rather
> > > > than (ab|ba)*.
>
> I'm confused. Is (ab|ba)* really what what was needed?
> This is completely deterministic, as far as I understand.
> It therefore should be allowed in DTDs, and if it doesn't
> work in Schemas, that would be a big problem.
<all> with elements 'a' and 'b' is represented as (ab|ba) -- that is, a
<choice> of every permutation of the elements.
The problem with <all>* is that ambiguities creep in if the number of
elements is > 1 and any of the elements can have a minOccurs of 0 --
this is demonstrated by the example above.
> Well, yes, you have to create a separate element name for each
> "Sequence of" construct. Is that so difficult?
It isn't difficult, but it gets counter-intuitive at times. I'll leave
that discussion for the ASN.1/XML lists. I thought I had found a
'cleaner' solution by using <all> for anonymous SET types, but
apparently not.
Cheers,
Geoff
--
Geoffrey Elgey ph: +61-7-38641487 Distributed Systems Technology
Centre
Security Unit fax:+61-7-38641282 QUT, Brisbane, Australia
http://www.dstc.edu.au
DSTC is the Australian W3C Office email: elgey@dstc.edu.au
Received on Wednesday, 27 June 2001 01:46:40 UTC