2012-02-12 61 views
1

伊夫屬性=節點值得到這個XML文件測試,如果不使用變量

<all> 
<general> 
    <catagory_name> 
    <catg>Action</catg_1> 
    <catg>Other</catg_2> 
    </catagory_name> 
</general> 
<games> 
    <catagory name='Action'> 
    <game> 
    <name>1945<!--name--></name> 
    <url><!--URL to game download--></url> 
    <image><!--image location--></image> 
    <alt>1945 Icon<!--alt text for image--></alt> 
    </game> 
    </catagory> 
    <catagory name='Other'> 
    <game> 
    <name>Platform Game<!--name--></name> 
    <url><!--URL to game download--></url> 
    <image><!--image location--></image> 
    <alt>Platform Game Icon<!--alt text for image--></alt> 
    </game> 
    </catagory> 
</games> 
</all> 

目前,我從我的XSLT提取讀取

<xsl:for-each select="all/general/catagory_name"> 
<xsl:variable name="catg"><xsl:value-of select="catg"/></xsl:variable> 
<xsl:if test="//all/games/catagory[@name=$catg]/game[position() = (1<!--I use nth term here but this is not relevant to my question so just pretend value = 1-->)]/url"> 
<!--action--> 
</xsl:if> 
</xsl:for-each> 

我想知道如何將[@ name = $ catg]替換爲// all/general/catagory_name/catg_1的值,但無法解決問題。

回答

2

我想知道如何使用的 //all/general/catagory_name/catg_1值替換[@name=$catg]但不能工作如何。

使用

/all/games/catagory[@name = current()/catg1] 

這將選擇所有/all/games/catagory元素的字符串值,其name屬性等於一個字符串值(在這種特殊情況下只有一個)的當前catg1孩子匹配(或當前由xsl:for-each執行)元素。

在W3C XSLT 1.0規範中瞭解有關XSLT current()函數的更多信息。

+0

豎起大拇指!我打算輸入相同的答案:)'Current()'在這裏是重要的:) – 2012-02-13 03:42:56

+1

@ infantprogrammer'Aravind':絕對 - 請注意它是'current()'。 Xml/XPath/XSLT區分大小寫。 – 2012-02-13 04:43:58

+0

非常感謝你,這已經完成了我的代碼 – user1205406 2012-02-13 08:33:44

相關問題