我的.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
的{{1}}中必须是唯一的。没关系。<another-parent>
中的<part name="A1">
必须是<child>
的keyref。而且我做不到。关于第一点,我使用了以下内容,并且可以正常工作。
<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>
答案 0 :(得分:0)
您没有向我们展示您在何处放置这些声明,而我猜测是您将它们放置在错误的位置。
如果您希望某个Y内的每个X都有一个唯一的Z值,那么您的键/唯一声明需要放入Y的元素声明中;选择器需要从Y开始选择X,并且字段需要从X开始选择Z。