我有几种数据类型使用base =""标识符。它们最终都从一个具有ID节点的基本类型扩展。我希望架构能够查看所有元素,以确保每个元素的ID都是唯一的。
到目前为止,我有:
<effects>
<ResistanceModificationEffect>
<ID>fire_resistance</ID>
<!-- other stuff -->
</ResistanceModificationEffect>
<ResistanceModificationEffect>
<ID>fire_resistance</ID>
<!-- other stuff -->
</ResistanceModificationEffect>
</effects>
和架构:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="effects">
<xs:complexType>
<xs:sequence>
<xs:element name="ResistanceModificationEffect" type="resistanceModificationEffectDef" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueID">
<xs:selector xpath=".//*"/>
<xs:field xpath="@ID"/>
</xs:unique>
</xs:element>
</schema>
至于xs:unique元素,我尝试了各种不同的东西,让它看到标签ID为节点的节点,以检查唯一性。
<xs:selector xpath="*"/>
<xs:selector xpath="./*"/>
<xs:selector xpath=".//*"/>
从我所有关于模式的内容中,我所需要的只是
<xs:selector xpath="*"/>
除非我不理解它。 This链接在底部表示&#34; *&#34;是一个有效的标识符,选择所有子项,&#34; @ elementName&#34;应该选择要比较的元素。
我误解了什么?
答案 0 :(得分:0)
捂脸
使用我在上面提供的链接回答了我自己的问题。使用
<xs:field xpath="@ID"/>
尝试从所选节点获取属性。
<xs:field xpath="ID"/>
提供正确的错误消息。我专注于错误的事情......