Xsd 没有全局唯一ID的XML文件中的引用完整性

Xsd 没有全局唯一ID的XML文件中的引用完整性,xsd,referential-integrity,Xsd,Referential Integrity,也许我不是为了树木而看森林,但它是这样的: 我正在设计一个XML文档,到目前为止,我已经想到了如下内容: <element key="root"> <data>...</data> <elements> <element key="foo"> <data>...</data> </element> <elem

也许我不是为了树木而看森林,但它是这样的:

我正在设计一个XML文档,到目前为止,我已经想到了如下内容:

<element key="root">
    <data>...</data>
    <elements>
        <element key="foo">
            <data>...</data>
        </element>
        <element key="bar">
            <data>...</data>
        </element>
    </elements>
</element>
所以它是一个简单的层次结构。我现在要做的是在层次结构中的任何位置从一个元素引用到任何其他元素。如果每个元素都有一个唯一的ID,这将是微不足道的,但它们没有。到目前为止,我只打算保证每个元素的键在其级别内是唯一的,就像目录结构中的文件名一样

换句话说,如果我有完全限定的键,比如root.foo,那么保证引用完整性就很简单了。但是我会存储多余的信息,我已经知道foo是root的一个子元素,为什么要存储这些信息两次呢

我意识到这本质上是一个表面问题。最简单的解决方案之一可能就是自动分配ID并完成它。但这是相当不雅观和容易出错的,除非你有一个很好的前端来编辑文件,所以我希望有一个更好的方法来做它

有没有办法在XML模式中实现这一点?

使用和

键在指定的上下文中是唯一的,因此它们不需要像ID:s contains元素那样全局唯一,ID:s contains元素指定键值的范围或上下文必须在整个集合中是唯一的,并且元素定义键节点。一个键可以有多个字段,在这种情况下,它们的组合必须是唯一的。和在声明中使用