使用XML Schema验证userId

时间:2012-09-17 21:57:10

标签: xml schema

是否可以验证job_position中的userId以仅匹配使用XML Schema在“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>

2 个答案:

答案 0 :(得分:1)

您需要在key元素上声明person约束,在userId上声明keyref约束。这两个都需要在所有person ID必须唯一的元素上声明,并且所有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>

答案 1 :(得分:-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