2011-09-01 23 views
4

によって選択するときに、私はこの割り当てを持っており、彼らはこれは私が持っているものであるXSLTXSLTは属性

によって与えられたデータを求めているワイルドカードを使用して:

<xsl:apply-templates select="results/result[@name=$param0]"/> 

だから、$のparam0が与えられていますjquery変換関数を使用します。私の問題は、$ param0の特定の値を送信するときに@nameのすべてを選択する方法です。私はほとんどのワイルドカードを試しましたが、何も動作していないようです。 あなたは私を助けることができますか? $ param0 = "NAME1" のための

入力XML

<results> 
<result name="name1"> 
    <score>2500</score> 
</result> 
<result name="name2"> 
    <score>13500</score> 
</result> 
<result name="name3"> 
    <score>65100</score> 
</result> 
</results> 

出力

<result name="name1"> 
<score>2500</score> 
</result> 

だから私はスコアのすべてを取得する必要があります、私はので、私はまだすることができ、XSLT文を維持する必要があります一つ選択してください。私はこれは私が探しているものを、それが明確になります願っています$ param0私は、ワイルドカードのいくつかの種類が必要=「ワイルドカード」< ==(それらの多くを試してみました)

<result name="name1"> 
    <score>2500</score> 
</result> 
<result name="name2"> 
    <score>13500</score> 
</result> 
<result name="name3"> 
    <score>65100</score> 
</result> 

ため

出力.. 。

答えて

4

偽の文字列ワイルドカードを使用しないのはなぜですか?

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:param name="param0" select="'*'"/> 

    <xsl:template match="/"> 
     <xsl:copy-of select="results/result[@name=$param0 and $param0!='*'] 
      | 
      results/result[$param0='*']"/> 
    </xsl:template> 

</xsl:stylesheet> 

それをコピーし、すべての結果$param0='*'、それ以外の場合はコピー$param0='name1'のような試合があり、希望のノード。そうでなければ何もコピーしません。

xsl:apply-templates以内に同じ式を使用できます。

+1

Omg私は今、とてもダムを感じています。答えをありがとう! – Sentinel

+0

これは単なるトリックです。 –

+2

私はこれを ''またはXPath 2.0、 'select =" results /結果@ $ param0 =(@ name、 '*')] " –