[
Lists Home |
Date Index |
Thread Index
]
Actually I was wrong. I've never thought about solving the problem using xsi:type before. Using xsi:type makes it possible, schema and instances follow
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="urn:foo" xmlns:foo="urn:foo">
<xs:element name="time" type="foo:abstractType" />
<xs:complexType name="abstractType" abstract="true" mixed="true">
<xs:sequence>
<xs:element name="placeholder" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="simpleTime" mixed="true">
<xs:complexContent>
<xs:restriction base="foo:abstractType">
<xs:sequence>
<xs:element name="placeholder" maxOccurs="0" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="removeMixed" mixed="false" abstract="true">
<xs:complexContent>
<xs:restriction base="foo:simpleTime" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="complexTime">
<xs:complexContent>
<xs:extension base="foo:removeMixed">
<xs:sequence>
<xs:element name="hour" type="xs:int" />
<xs:element name="min" type="xs:int" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
<time xmlns="urn:foo" xmlns:foo="urn:foo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="foo:complexTime"><hour>14</hour><min>59</min></time>
<time xmlns="urn:foo" xmlns:foo="urn:foo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="foo:simpleTime">14:59</time>
________________________________
From: Chiusano Joseph [mailto:chiusano_joseph@bah.com]
Sent: Tue 9/9/2003 7:14 AM
To: Dare Obasanjo
Cc: GARNIER Pierre; xml-dev@lists.xml.org
Subject: Re: [xml-dev] Re: RE : [xml-dev] Text or tags choice with XSD
<Quote>
such content models are not describable with W3C XML Schema.
</Quote>
I see...the original example below cannot have a base type from which a
derived type is created, because of the how the 2 content models are
represented. Is that what you're driving at?
Kind Regards,
Joe Chiusano
Booz | Allen | Hamilton
Dare Obasanjo wrote:
>
> That would be a neat trick. Do you have an example of what the schema definition would be? I've always been of the impression that such content models are not describable with W3C XML Schema.
>
>
>
> ________________________________
>
> From: Chiusano Joseph [mailto:chiusano_joseph@bah.com]
> Sent: Tue 9/9/2003 6:44 AM
> To: GARNIER Pierre
> Cc: 'xml-dev@lists.xml.org'
> Subject: [xml-dev] Re: RE : [xml-dev] Text or tags choice with XSD
>
> Oops - I forgot about that. Then you should probably use abstract types
> (see section 4.7 Abstract Elements and Types of the Schema Primer) and
> use xsi:type in your instance document to define which type is being
> used at runtime.
>
> Kind Regards,
> Joe Chiusano
> Booz | Allen | Hamilton
>
> GARNIER Pierre wrote:
> >
> > No, union are not usable within complex types.
> >
> > > Pierre,
> > >
> > > This can be done with Union types [1].
> > >
> > > Kind Regards,
> > > Joe Chiusano
> > > Booz | Allen | Hamilton
> > >
> > > [1] http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/primer.html#UnionDt
> > >
> > > GARNIER Pierre wrote:
> > > >
> > > > Hi,
> > > >
> > > > Here are two <time> elements differing only in there content :
> > > >
> > > > 1)
> > > > <doc>
> > > > <time>14:09<time>
> > > > </doc>
> > > >
> > > > 2)
> > > > <doc>
> > > > <time><hour>14</hour><min>09</min></time>
> > > > </doc>
> > > >
> > > > In an XSD schema, how to indicate that the <time> element can contain
> > > > text and only text or <hour> tag followed by <min> tag?
> > > >
> > > > I tried with a choice group containing two <time> elements with
> > > > different types but it doesn't work : it is not possible to have two
> > > > elements with the same name.
> > > >
> > > > Thanks.
> > > > Pierre.
> > > >
> > > > -----------------------------------------------------------------
> > > > The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> > > > initiative of OASIS <http://www.oasis-open.org>
> > > >
> > > > The list archives are at http://lists.xml.org/archives/xml-dev/
> > > >
> > > > To subscribe or unsubscribe from this list use the subscription
> > > > manager: <http://lists.xml.org/ob/adm.pl>
> > >
|