2012-05-07 4 views
0

모두 약간의 문제가 있습니다. member_id 역할을하는 속성이 필요합니다.XML 스키마 선택 및 속성

내가 얻을 수없는 또 다른 태그로있는 경우이 becuase있다

그 고유의 총 내가 할 수있는 유일한 모든 full_member 유형 및 basic_member 유형은 독특한 얻을.

그래서 내가 속성과 키를 사용하여이 문제를 해결할 수 생각했다.

하지만 내 문제는 내가 서로 옆에 속성과 선택의 여지가 없다 또는 나는 바로 그것을 할 방법을 모르는 것입니다.

다음은 지금까지 내 스키마입니다.
<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> 

하지만 내 현재 스키마와

이 아이디의이, 1, 1 2 갈 것 항목의

<?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> 

예,

(2) 나는이 그것을 할 것이라고 생각 당신에게

+0

난 당신이 무슨 뜻인지 이해가 안 돼요 "내가 얻을 수없는 또 다른 태그로있는 경우이 becuase되어 그 전체 독특한 내가 할 수있는 유일한 모든 full_member 유형 및 basic_member 유형은 독특한 얻을." 문제를 자세히 설명해 주시겠습니까? –

+0

나는 단지 exmaple에 대한 MEMBER_ID의 각각에 대해 고유은 ID 1과 정회원 및 ID 1. 기본 부재 (2)와 전체 2 회원 및 기본있을 것입니다 수 있습니다 full_member 및 basic_member이 개 다른 복합 유형을 사용하고 변경할 수 없기과 곧. 내가 원하는 것은 전체 1 가지 기본 2 가지 전체 3 가지 기본 4 가지입니다. 이 풀과 기본은 어떤 순서로도 입력 할 수 있습니다. 기본/완전 기본 전체 기본 기본 전체 기본하지만, 1, 2, 3, 4, 5, 6, 7로 이동하려면 ID가 필요합니다. –

+0

유효성을 검사하려는 샘플 입력의 간단한 예를 제공 할 수 있습니다. –

답변

0

감사합니다 :

<xs:key name="PK_member"> 
    <xs:selector xpath=".//basic_member|.//full_member" /> 
    <xs:field xpath="member_id" /> 
</xs:key> 

스키마에 잘못된 것으로 보이거나 최소한 샘플 XML과 일치하지 않습니다. 스키마에서 members은 하나의 속성을 가진 member 요소를 포함하고, 거기에 별도의 두 가지 -과 관련이없는 - XML ​​파일 basic_memberfull_member있는 반면 full_memberbasic_member 요소는 member 내부에 표시됩니다.