私は少し問題があります。属性を member_id として機能させたいと思います。
これは、別のタグとして持っている場合、完全に一意にすることはできず、すべての full_member タイプと basic_member タイプに対してのみ一意にすることができるためです。
そのため、属性とキーでこれを解決できると考えました。
しかし、私の問題は、属性と選択肢を隣り合わせに置くことができないか、それを正しく行う方法がわからないことです。
以下はこれまでの私のスキーマです。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:complexType name="memberinfo">
<xs:sequence>
<xs:element ref="member_id"/>
<xs:element ref="first_name"/>
<xs:element ref="last_name"/>
<xs:element ref="address"/>
<xs:element ref="contact_numbers"/>
<xs:element ref="date_joined"/>
</xs:sequence>
</xs:complexType>
<xs:element name="member_id" type="xs:integer"/>
<xs:element name="first_name" type="xs:NCName"/>
<xs:element name="last_name" type="xs:NCName"/>
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="house_number"/>
<xs:element ref="house_name"/>
</xs:choice>
<xs:element ref="street"/>
<xs:element ref="town"/>
<xs:element ref="city"/>
<xs:element ref="county"/>
<xs:element ref="postcode"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="house_number" type="xs:integer"/>
<xs:element name="house_name" type="xs:string"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="town" type="xs:NCName"/>
<xs:element name="city" type="xs:NCName"/>
<xs:element name="county" type="xs:NCName"/>
<xs:element name="postcode" type="xs:NCName"/>
<xs:element name="contact_numbers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="3" ref="contact_number"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="contact_number" type="xs:integer"/>
<xs:element name="date_joined" type="xs:date"/>
<xs:complexType name="basic_member">
<xs:complexContent>
<xs:extension base="memberinfo">
<xs:sequence>
<xs:element name="activities">
<xs:complexType>
<xs:sequence>
<xs:element name="activity_name" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="full_member">
<xs:complexContent>
<xs:extension base="memberinfo">
<xs:sequence>
<xs:element name="activities">
<xs:complexType>
<xs:sequence>
<xs:element name="activity_name" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="members" >
<xs:complexType>
<xs:sequence>
<xs:element name="member" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="member_id"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="PK_member">
<xs:selector xpath=".//member" />
<xs:field xpath="member_id" />
</xs:key>
</xs:element>
</xs:schema>
記入例
<member>
<full_member>
<member_id>1</member_id>
<first_name>Simon</first_name>
<last_name>Hughes</last_name>
<address>
<house_number>12</house_number>
<street>Ashgrove Road</street>
<town>Forest Town</town>
<city>Mansfield</city>
<county>Nottinghamshire</county>
<postcode>NG385DX</postcode>
</address>
<contact_numbers>
<contact_number>01623948594</contact_number>
<contact_number>01623349596</contact_number>
<contact_number>01623486599</contact_number>
</contact_numbers>
<date_joined>2012-05-21</date_joined>
<activities>
<activity_name>Treadmill</activity_name>
<activity_name>Squash</activity_name>
<activity_name>Table Tennis</activity_name>
<activity_name>Weights</activity_name>
</activities>
</full_member>
</member>
<member>
<full_member>
<member_id>2</member_id>
<first_name>Scott</first_name>
<last_name>Calladine</last_name>
<address>
<house_name>Don House</house_name>
<street>Simons Road</street>
<town>Broadton</town>
<city>Supper</city>
<county>Nottinghamshire</county>
<postcode>N496DX</postcode>
</address>
<contact_numbers>
<contact_number>01623395865</contact_number>
<contact_number>01623496959</contact_number>
<contact_number>01623005604</contact_number>
</contact_numbers>
<date_joined>2007-08-16</date_joined>
<activities>
<activity_name>Static Cycle</activity_name>
<activity_name>Badminton</activity_name>
<activity_name>Table Tennis</activity_name>
</activities>
</full_member>
</member>
<member>
<full_member>
<member_id>3</member_id>
<first_name>Fransis</first_name>
<last_name>Smith</last_name>
<address>
<house_name>Don House</house_name>
<street>Lemington Close</street>
<town>Bradford</town>
<city>Bradfordcity>
<county>West Yorkshire</county>
<postcode>BD723DX</postcode>
</address>
<contact_numbers>
<contact_number>01623497035</contact_number>
<contact_number>01623389468</contact_number>
<contact_number>01623439949</contact_number>
</contact_numbers>
<date_joined>2007-08-16</date_joined>
<activities>
<activity_name>Static Cycle</activity_name>
<activity_name>Badminton</activity_name>
<activity_name>Table Tennis</activity_name>
</activities>
</full_member>
</member>
<member>
<full_member>
<member_id>4</member_id>
<first_name>Hayley</first_name>
<last_name>Cummingham</last_name>
<address>
<house_number>87</house_number>
<street>Boreast Road</street>
<town>Braranger</town>
<city>Mansfield</city>
<county>Nottinghamshire</county>
<postcode>N454HX</postcode>
</address>
<contact_numbers>
<contact_number>01623306031</contact_number>
<contact_number>01623206940</contact_number>
<contact_number>01623059680</contact_number>
</contact_numbers>
<date_joined>2012-05-21</date_joined>
<activities>
<activity_name>Treadmill</activity_name>
<activity_name>Squash</activity_name>
<activity_name>Table Tennis</activity_name>
<activity_name>Weights</activity_name>
</activities>
</full_member>
</member>
しかし、私の現在のスキーマでは、ID は 1 ,1 ,2 ,2 になります
ありがとうございました