2010-09-08 17 views
1

也許我不是隻見樹木不見森林,但這裏有雲:參照完整性沒有全局唯一ID

我「設計」 XML文檔和迄今拿出的東西如下所示:

<element key="root"> 
    <data>...</data> 
    <elements> 
     <element key="foo"> 
      <data>...</data> 
     </element> 
     <element key="bar"> 
      <data>...</data> 
     </element> 
    </elements> 
</element> 

所以這是一個簡單的層次結構。我現在想要做的是從一個元素到層次結構中任何其他元素的引用。如果每個元素都有唯一的ID,那麼這將是微不足道的,但他們不會。到目前爲止,我只打算保證每個元素的鍵在其級別內是唯一的(就像目錄結構中的文件名一樣)。

換句話說,如果我有完全合格的密鑰,如root.foo,保證參照完整性將會很簡單。但後來我會存儲冗餘信息(我已經知道fooroot的子元素,爲什麼要將這些信息存儲兩次?)。

我意識到這實質上是一個美容問題。最簡單的解決方案之一可能是自動分配ID並完成它。但這是相當不雅的(除非你有一個很好的編輯文件的前端),所以我希望有一個更好的方法來做到這一點。

有沒有辦法在XML模式中實現這一點?

回答

0

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

keys指定範圍內唯一的,這樣他們不需要爲全局唯一ID一樣:■<xs:key>包含指定密鑰(key值/秒的範圍或上下文<xs:selector>元素在此集合中必須是唯一的)和定義關鍵節點的<xs:field>元素。密鑰可以有多個字段,在這種情況下,他們的組合必須是唯一的。 <xs:key><xs:keyref>用於<xs:element>聲明中。