是否可以验证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>
答案 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>