2016-10-25 66 views
1

你好我的XML看起來像這樣節點名作爲參數

<Component name="super.useful.component"> 
     <StringValue name="component.title.1"> 
       <Value>some value</Value> 
     </StringValue> 
     <StringValue name="component.title.2"> 
       <Value>some more value</Value> 
     </StringValue> 
</Component> 

所有我想要做的是有名字作爲參數。

我的XSL是這樣的:

<xsl:call-template name="showComponents"> 
       <xsl:with-param name="container" select="//Component/StringValue[@name????]/> 
      </xsl:call-template 

所以當我叫它,它可以有分量的兩個名字。

<xsl:template name="showComponents"> 
     <xsl:param name="container" /> 
     <xsl:for-each select="Component[@name='$container']>  

     //do stuff here 

回答

1

我認爲你是於XPath的摸索來獲得屬性nameStringValue元素。如果是這樣的情況下,XPath的選擇將是:

//StringValue/@name

+0

哇,這很容易,謝謝。 12小時的工作和 – Kostakiiiis

1

好像你從@svasa有你的答案的一部分了,但還要注意,你幾乎可以肯定不是你想要的

<xsl:for-each select="Component[@name='$container']>  

而是

<xsl:for-each select="Component[@name=$container]> 

否則你會從字面上對字符串進行測試時,'$container',沒有可變評估。

+0

是的好點,我試圖用我的程序與''在開始,它沒有工作,然後沒有和所有的好。 – Kostakiiiis