0

XML スキーマを使用して、job_position 内の userId を検証して、"person" 要素で提供された値のみと一致させることは可能ですか?

<person id="1">
<firstName>Jo</firstName>
<lastName>Smi</lastName>
</person>
<person id="2">
<firstName>John</firstName>
<lastName>Smith</lastName>
</person> 
<job_position>
  <userId>1</userId> <!-- This is valid -->
  <position>Manager</position>
</job_position>
<job_position>
  <userId>2</userId> <!-- This is valid -->
  <position>Programmer</position>
</job_position>
<job_position>
  <userId>3</userId> <!-- This is Invalid -->
  <position>Systems Analyst</position>
</job_position>
4

2 に答える 2

1

key要素に制約を宣言しperson、 に keyref 制約を宣言する必要がありますuserId。これらは両方とも、すべてのpersonID が一意である必要があり、すべてのjob_position/userId値が人物を参照する必要がある要素で宣言する必要があります。多くの場合、それはドキュメント要素として機能することを期待する要素です。

<xs:key name="user-id">
  <xs:selector xpath=".//person"/>
  <xs:field xpath="./@id"/>
</xs:key>
<xs:keyref refer="user-id" name="user-id-ref">
  <xs:selector xpath=".//job_position/userId"/>
  <xs:field xpath="."/>
</xs:keyref>
于 2012-09-17T23:35:43.643 に答える
-1

使用できます

<xs:element name="userId">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element> 

その他の例については、http ://www.w3schools.com/schema/schema_facets.asp を参照してください。

于 2012-09-17T22:36:23.393 に答える