0

是否可以使用 XML Schema 验证 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约束,并在. 这两者都需要在元素上声明,其中所有ID 都必须是唯一的,并且所有值都需要引用一个人。通常,这将是您希望用作文档元素的元素。personuserIdpersonjob_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 回答