- From: George Cristian Bina <george@sync.ro>
- Date: Thu, 2 Sep 2004 06:09:39 +0300
- To: "Shane Lauf" <srl01@uow.edu.au>, <xmlschema-dev@w3.org>
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@oxygenxml.com
<oXygen/> XML Editor and XSLT Editor/Debugger
http://www.oxygenxml.com/
----- Original Message -----
From: "Shane Lauf" <srl01@uow.edu.au>
To: <xmlschema-dev@w3.org>
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
>
>
>
Received on Thursday, 2 September 2004 03:12:31 UTC