2012-04-17 20 views
1

我想創建一組包含特定值的元素。 然後我想給這個組命名。最後,我想引用這個組。 事情是這樣的:如何重用XML中的數據

<catalog type="expensive"> 
    <powder>25</powder> 
    <cream>110</cream> 
</catalog> 

<catalog type="normal"> 
    <powder>5</powder> 
    <cream>45</cream> 
</catalog> 

<person> 
    <name>Jim</name> 
    <catalog type="expensive"> 
    <powder>25</powder> 
    <cream>110</cream> 
    </catalog> 
</person> 

而不是重複昂貴目錄同每個人的元素,是有辦法的人的要素是指已建立昂貴的目錄組?

回答

3

簡短的回答是,你已經做了你的榜樣 - 如果type唯一標識,你可以寫類似的目錄:

<person> 
    <name>Jim</name> 
    <catalogRef type="expensive" /> 
</person> 

和你做 - 你需要的信息都在那裏。如果type不是唯一的,則可以添加另一個唯一屬性來標識每個目錄(通常爲id)。

較長的答案需要一些關於如何處理和使用此XML的細節 - 如果您想用某種方式使用XSLT進行轉換,那麼上述方法就沒有問題 - 您可以使用某些東西訪問每個人的目錄像這樣:

<xsl:variable name="catalogType" select="catalogRef/@type" /> 
<xsl:variable name="catalog" select="/*/catalog[@type=$catalogType]" /> 

假設當前節點是person元素,並且所有的目錄定義都位於根目錄下的同一個XML中。