代码之家  ›  专栏  ›  技术社区  ›  n3rd

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

  •  1
  • n3rd  · 技术社区  · 15 年前

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   jasso    15 年前

    <xs:key> <xs:keyref>

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