- 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