Altova Mailing List Archives>Archive Index >xmlschema-dev Archive Home >Recent entries >Thread Prev - >Thread Next - RE: Extending abstract elements with a choice Re: Extending abstract elements with a choiceTo: "Shane Lauf" <srl01@---.---.-->, <xmlschema-dev@--.---> Date: 9/2/2004 9:10:00 AM
Hi Shane,
I guess can do that with a restriction to an empty content model and then
extend that to your desired content model:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="test">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="myAbstractElement"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="myAbstractElement" type="myAbstractElementType"
abstract="true"/>
<xsd:complexType name="myAbstractElementType">
<xsd:sequence>
<xsd:element ref="Object1" minOccurs="0"/>
<xsd:element ref="Object2" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Object1"/>
<xsd:element name="Object2"/>
<xsd:complexType name="tmp">
<xsd:complexContent>
<xsd:restriction base="myAbstractElementType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="myConcreteElement"
substitutionGroup="myAbstractElement">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="tmp">
<xsd:choice>
<xsd:element ref="SpecialObject1"/>
<xsd:sequence>
<xsd:element ref="Object1" minOccurs="0"/>
<xsd:element ref="Object2" minOccurs="0"/>
</xsd:sequence>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="SpecialObject1"/>
</xsd:schema>
<?xml version="1.0"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
<myConcreteElement>
<SpecialObject1></SpecialObject1>
</myConcreteElement>
</test>
Best Regards,
George
-------------------------------------------------------
George Cristian Bina mailto:george@o...
<oXygen/> XML Editor and XSLT Editor/Debugger
www.---.com/
----- Original Message -----
From: "Shane Lauf" <srl01@u...>
To: <xmlschema-dev@w...>
Sent: Thursday, September 02, 2004 5:24 AM
Subject: Extending abstract elements with a choice
>
> I have a question about extending abstract elements with a choice, and
> maintaining substitutability.
>
> Say I have an abstract element myAbstractElement, defined with some child
> elements which all have minOccurs=0 attributes set.
>
> <xsd:sequence>
> <xsd:element ref="Object1" minOccurs="0"/>
> <xsd:element ref="Object2" minOccurs="0"/>
> </xsd:sequence>
>
> Is there a way that I can extend/restrict myAbstractElement to another
> element myConcreteElement, which ends up with a definition semantically
> equivalent to:
> <xsd:sequence>
> <xsd:choice>
> <xsd:element ref="SpecialObject1"/>
> <xsd:sequence>
> <xsd:element ref="Object1" minOccurs="0"/>
> <xsd:element ref="Object2" minOccurs="0"/>
> </xsd:sequence>
> </xsd:choice>
> </xsd:sequence>
>
> - in otherwords, so that myConcreteElement must have one or the other of
> [the child elements as defined in myAbstractElement i.e. Object1 and
Object
> 2], [a SpecialObject1 child] - and still be substitutable for
> myAbstractElement?
>
> Regards,
>
> Shane
>
>
>
From srl01@u... Thu Sep 02 04:49:06 2004
Received: from bart.w3.org ([128.30.52.40])
by frink.w3.org with esmtp (Exim 4.34)
id 1C2jX0 | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
