- From: David Orchard <dorchard@bea.com>
- Date: Mon, 23 Apr 2007 12:56:44 -0700
- To: <www-tag@w3.org>
Henry, Dan, etc.,
Is this the scenario that you are talking about?
personName and personNameWithMiddle are of 2 different types that are in
the substitution group for AbstractPersonName. It's more interesting
when the personNameWithMiddle is in a different schema doc and
namespace, but this is the heart of it.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/name/1"
xmlns:namens="http://www.example.org/name/1">
<xs:element name="AbstractPersonName" abstract="true"/>
<xs:element name="personName" type="namens:nameType"
substitutionGroup="namens:AbstractPersonName"/>
<xs:complexType name="nameType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element ref="namens:given" />
<xs:element ref="namens:family" />
</xs:choice>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="strict" />
</xs:complexType>
<xs:element name="given" type="xs:string"/>
<xs:element name="family" type="xs:string"/>
<xs:complexType name="nameWithMiddleType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element ref="namens:given" />
<xs:element ref="namens:family" />
<xs:element ref="namens:middle" minOccurs="0"/>
</xs:choice>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="strict" />
</xs:complexType>
<xs:element name="middle" type="xs:string"/>
<xs:element name="personNameWithMiddle"
type="namens:nameWithMiddleType"
substitutionGroup="namens:AbstractPersonName"/>
</xs:schema>
Cheers,
Dave
Received on Monday, 23 April 2007 19:56:58 UTC