XSD - уникальные значения двух разных атрибутов
Можно ли на уровне схемы применять уникальные значения двух атрибутов с разными именами?
<xs:complexType name="exampleType">
<xs:attribute name="first" type="xs:integer" use="required"/>
<xs:attribute name="second" type="xs:integer"/>
</xs:complexType>
Если first
это 1, second
должна быть какая-то другая ценность.
РЕДАКТИРОВАТЬ: я использую XSD 1.0.
1 ответ
Как я уже сказал в моем комментарии, это действительно только если first
а также second
являются элементами (не атрибутами). |
Оператор xpath это как объединение узлов.
<xs:element name="exampleElement" type="exampleType">
<xs:unique name="firstAndSecondDifferent">
<xs:selector xpath="first | second" />
<xs:field xpath="." />
</xs:unique>
</xs:element>
<xs:complexType name="exampleType">
<xs:sequence>
<xs:element name="first" type="xs:integer" />
<xs:element name="second" type="xs:integer" minOccurs="0" />
</xs:sequence>
</xs:complexType>
Следующий элемент действителен (first
а также second
имеют разные значения):
<exampleElement>
<first>1</first>
<second>5</second>
</exampleElement>
Следующий элемент действителен (нет second
элемент присутствует):
<exampleElement>
<first>1</first>
</exampleElement>
Следующий элемент недействителен (first
а также second
имеют одинаковое значение):
<exampleElement>
<first>1</first>
<second>1</second>
</exampleElement>
Это не может быть сделано с атрибутами, потому что selector xpath
не позволяет использовать атрибуты так "@first | @second"
это недопустимое значение атрибута xpath селектора.