У меня проблема при проверке некоторых уникальных ограничений в XML с использованием XSD. (Я проверяю с помощью 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>
более одного раза, поэтому я определил ограничение в root -элем):
<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.
, но 'job' - простой тип. Что мне здесь не хватает? Заранее спасибо!
PS: я хочу добиться, чтобы в каждом теге <jobs>
каждая работа была уникальной.