- From: Shane Lauf <srl01@uow.edu.au>
- Date: Mon, 2 Aug 2004 19:27:03 +1000
- To: <xmlschema-dev@w3.org>
I am running in to a problem with substitution groups when the substitution group head includes a required element. For an element which I would like to include in the substitution group, I would like the required element to be replaced by a different element which is not substitutable for the required element. For example, I have a myObject element (think "postal letter") of type myObjectType, defined to include either a "pobox" or some number of "streetaddress"es. (i.e. it has to have at least one or the other.) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="myContainer"> <xsd:complexType> <xsd:sequence> <xsd:element ref="myObject"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="myObject" type="myObjectType"/> <xsd:complexType name="myObjectType" mixed="true"> <xsd:sequence> <xsd:choice> <xsd:element name="pobox" type="string"/> <xsd:element name="streetaddress" type="string" maxOccurs="unbounded"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:schema> Example usage: <myObject><pobox>12345</pobox></myObject> <myObject><streetaddress>12345 Smith Ave.</streetAddress></myObject> I would like to define a myOtherObject which can have a "forwardingaddress" instead of the "pobox" or "streetaddress"es: <myOtherObject><forwardingaddress>12345 Jones Ave.</forwardingaddress></myOtherObject> The crunch is that I also need myOtherObject to *substitute* for myObject under myContainer. However if I declare myOtherObject to have substitutionGroup="myObject", it seems to have to be to be a derivation from myObjectType - thereby inheriting the requirement to have either a "pobox" or a "streetaddress". Is there some way I can: * substitute for, without deriving from (extending), myObjectType; * extend myObjectType with a minOccurs="0" on the elements in the choice; or * extend myObjectType with another possible element (forwardingaddress) in the choice .... allowing me to get around the one-or-the-other(pobox|streetaddress) restriction - and leave the original schema intact? SRL
Received on Monday, 2 August 2004 05:33:28 UTC