我在使用XSD验证XML中的某些唯一约束时遇到问题。 (我正在使用XMLlint进行验证)我具有以下结构:
<xsd:element name="elem" type="elemType" >
<xsd:unique name="uniqueJob">
<xsd:selector xpath=".//jobs/job"/>
<xsd:field xpath="."/>
</xsd:unique>
</xsd:element>
[作业在<elem>
中深层嵌套的复杂类型中(我多次使用<jobs>
,这就是为什么我在根元素中定义了约束):
<xsd:complexType name="jobType">
<xsd:sequence>
<xsd:element name="job" minOccurs="0" maxOccurs="3" />
</xsd:sequence>
</xsd:complexType>
我现在的问题是:如果我有类似的东西
<jobs>
<job>Programmer</job>
<job>Scientist</job>
</jobs>
它确实以某种方式无法验证。我从XMLlint收到以下错误:Element 'job': The XPath './/jobs/job' of a field of unique identity-constraint 'uniqueJob' does evaluate to a node of non-simple type.
但是“工作”是一种简单的类型。我在这里想念的是什么?在此先感谢!
PS:我想在每个<jobs>
标签中实现每个作业都是唯一的。
更改