2016-10-25 9 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:call-template name="showComponents"> 
       <xsl:with-param name="container" select="//Component/StringValue[@name????]/> 
      </xsl:call-template 

私はそれを呼び出すときに、それはコンポーネントの両方の名前を持つことができます。

私のXSLは、このようになります。

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

     //do stuff here 

答えて

1

私はあなたがStringValue要素の属性nameを得るために、XPath時に手探りしていると思います。その場合は、XPathのセレクタは次のようになります。あなたは@svasaから、すでにあなたの答えの一部を得たよう

//StringValue/@name

+0

うわー、とても簡単でした。 12時間働いて – Kostakiiiis

1

がようだが、はまた、あなたがほぼ確実にあなたが望んでいないものをそのに注意してください

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

ではなく、むしろ

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

そうあなたは、文字列に対して文字通りをテストすることがあります、可変評価なし。

+0

ええ、良い点、私は最初に ''と私のプログラムにそれを試してみました。 – Kostakiiiis

関連する問題