Altova Mailing List Archives>Archive Index >xmlschema-dev Archive Home >Recent entries >Thread Prev - Re: Extending abstract elements with a choice >Thread Next - Domain experts RE: Extending abstract elements with a choiceTo: <xmlschema-dev@--.---> Date: 9/3/2004 12:48:00 AM George, Thanks very much for the quick reply on this - I'll give it a try. There's no way to do it in one go (i.e. without the tmp element), right? Shane > -----Original Message----- > From: xmlschema-dev-request@w... [mailto:xmlschema-dev-request@w...] On > Behalf Of George Cristian Bina > Sent: Thursday, September 02, 2004 1:10 PM > To: Shane Lauf; xmlschema-dev@w... > Subject: Re: Extending abstract elements with a choice > > > 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 george@s... Thu Sep 02 09:52:11 2004 Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.34) id 1C2oGJ-0002Fq-7B for xmlschema-dev@l | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
