Re: Alternative tags in element?

At 2009-04-30 22:06 +1000, Paul Steckler wrote:
>   I want to create an element, say "Foo" that contains a sequence 
> of elements which
>have different tags, say "Bar" and "Glob".  So these would be legal:
>
>    <Foo><Glob/><Bar/></Foo>
>
>   <Foo><Bar/><Glob/></Foo>
>
>   <Foo><Bar/><Glob/><Bar/></Foo>
>
>In the complexType for Foo elements, can you specify that it 
>contains a sequence
>of alternative elements, in arbitrary order?

Yes, it could be called an "unbounded choice".

Unless, perhaps, by "alternative" you mean that they alternate from 
one to the other?  I'm guessing not.

>Or do I have to create a wrapper element
>for the alternatives and place them in a union?

Nope.

I hope the example below helps.

. . . . . . . Ken

t:\ftemp>type steckler1.xml
<Foo><Glob/><Bar/></Foo>

t:\ftemp>type steckler2.xml
<Foo><Bar/><Glob/></Foo>

t:\ftemp>type steckler3.xml
<Foo><Bar/><Glob/><Bar/></Foo>

t:\ftemp>type steckler4-bad.xml
<Foo><Bar/><Baz/></Foo>

t:\ftemp>type steckler.xsd
<?xml version="1.0" encoding="US-ASCII"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:annotation>
  <xsd:documentation xml:lang="en">
    Paul's example
  </xsd:documentation>
</xsd:annotation>

<xsd:element name="Foo">
   <xsd:complexType>
     <xsd:choice maxOccurs="unbounded">
       <xsd:element name="Bar"/>
       <xsd:element name="Glob"/>
     </xsd:choice>
   </xsd:complexType>
</xsd:element>

</xsd:schema>

t:\ftemp>w3cschema-saxon steckler.xsd steckler1.xml
No validation errors.

t:\ftemp>w3cschema-saxon steckler.xsd steckler2.xml
No validation errors.

t:\ftemp>w3cschema-saxon steckler.xsd steckler3.xml
No validation errors.

t:\ftemp>w3cschema-saxon steckler.xsd steckler4-bad.xml
Validation error on line 1 column 18 of steckler4-bad.xml:
   In content of element <Foo>: The content model does not allow 
element <Baz> to appear
   here. Expected one of: Bar, Glob (See 
http://www.w3.org/TR/xmlschema-1/#cvc-complex-type clause 2.4)
No validation errors.

t:\ftemp>

--
XQuery/XSLT/XSL-FO hands-on training - Los Angeles, USA 2009-06-08
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/x/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman@CraneSoftwrights.com
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/x/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Received on Sunday, 3 May 2009 02:22:37 UTC