我想知道是否可以区分xml模式中的id字段。我有以下模式:

<element name="define_apple">
    <complexType>
        <attribute name="colour" type="ID"/>
    </complexType>
</element>

<element name="define_orange">
    <complexType>
        <attribute name="colour" type="ID"/>
    </complexType>
</element>

<element name="reference_apple">
    <complexType>
        <attribute name="colour" type="IDREF"/>
    </complexType>
</element>

<element name="reference_orange">
    <complexType>
        <attribute name="colour" type="IDREF"/>
    </complexType>
</element>

但是,这些引用并不是唯一地链接到各自的定义。我仍然可以编写以下毫无意义但有效的xml:
<define_apple colour="green"/>
<define_orange colour="orange"/>

<reference_apple colour="orange"/>
<reference_orange colour="green"/>

是否有方法可以使用id和idref(例如使用命名空间)正确链接字段?我知道我可以用key和keyref,但是id对我来说更有吸引力。

最佳答案

不,我不认为这是可能的。http://www.w3.org/TR/xmlschema-2/#IDhttp://www.w3.org/TR/xmlschema-2/#IDREF表示id和idref属性类型来自xml标准,而http://www.w3.org/TR/2000/WD-xml-2e-20000814#NT-TokenizedType表示idref的有效性约束只是匹配文档中的某些id。我想id和idref主要是在xml模式中,以便与dtd向后兼容。

10-08 14:25