Я имею следовать XSD файл схемы:XSD Уникальный Constraint элементов в различных последовательностях
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xsd:element name="Config">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Modul">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Content1">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Content2">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="AttributeType1">
<xsd:complexType>
<xsd:attribute name="X" type="xsd:double" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="AttributeType1">
<xsd:complexType>
<xsd:attribute name="X" type="xsd:double" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Name" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:unique name="Content2NameUniqueKey">
<xsd:selector xpath="Content2" />
<xsd:field xpath="@Name" />
</xsd:unique>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Name" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:unique name="Content1NameUniqueKey">
<xsd:selector xpath="Content1" />
<xsd:field xpath="@Name" />
</xsd:unique>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xs:schema>
С уникальными ограничениями, я могу проверить, если Content1 имя уникально, и если все Content2 являются unuique имени была в Content1 элемент.
Но моя проблема ist, я хочу проверить, уникальны ли все элементы content2 во всех элементах content1. Поэтому в полном XML-файле может быть только один элемент content1 с именем «xy».
Не могли бы вы помочь мне?
Многие поздравления всем!
Thank's! Первое решение работает очень хорошо. – MrPink
@MrPink: Пожалуйста, [** accept **] (http://meta.stackoverflow.com/q/5234/234215) этот ответ, если это поможет. Благодарю. – kjhughes