1

也许我没有只见树木不见森林,但它是这样的:

我正在“设计”一个 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 Schema 中实现这一点?

4

1 回答 1

0

使用<xs:key><xs:keyref>

键在指定的上下文中是唯一的,因此它们不需要像 ID 一样是全局唯一的:s<xs:key>包含<xs:selector>指定键的范围或上下文的元素(键值在此集合中必须是唯一的)和<xs:field>定义键节点的元素. 一个键可以有多个字段,在这种情况下,它们的组合必须是唯一的。<xs:key><xs:keyref><xs:element>声明中使用。

于 2010-09-10T18:46:52.597 回答