Мой XML-файл выглядит примерно так:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file.xsd">
<parent id="">
<child>
<part>A1</part>
</child>
</parent>
<another-parent name="AAA">
<part name="A1"/>
<part name="A2"/>
<part name="A3"/>
</another-parent>
<another-parent name="BBB">
<part name="A1"/>
</another-parent>
</root>
То, что я хочу, это:
name
из <another-parent>
должно быть уникальным. И это нормально.
name
из <part>
должен быть уникальным в пределах name
от <another-parent>
. И это нормально.
<part name="A1">
внутри <child>
должно быть ключевым значением <another-parent>
. И я не могу этого сделать.
Для первого пункта я использовал следующее, и оно работает правильно.
<xsd:key name="anotherParentKey">
<xsd:selector xpath="another-parent"/>
<xsd:field xpath="@name"/>
</xsd:key>
Для второго я использовал это в объявлении элемента:
<xsd:key name="partKey">
<xsd:selector xpath="part"/>
<xsd:field xpath="./@name"/>
</xsd:key>
Теперь работает.
Но для третьей части я попытался поместить этот код в (первый общий предок), но он не работает:
<xsd:keyref name="roadSegmentRef" refer="roadSegmentKey">
<xsd:selector xpath="identifiedEntity/place/roadSegment" />
<xsd:field xpath="." />
</xsd:keyref>
Но я получаю только:
cvc-identity-constraint.4.3: Key 'partRef' with value 'A1' not found for identity constraint of element 'parent'. file.xml /sheet/xsd line 19 XML Problem