2017-04-13 4 views
0

下のサンプルにHolaを表示するにはどうすればよいですか?今、こんにちは、こんにちは。変数にセットが含まれている場合、2番目のアイテムに移動するにはどうすればいいですか

XML

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="nodevariable.xslt"?> <!--todo: change this if copying to new file--> 
<!--todo: change preceding line if copying to new file--> 
<greetings> 
    <greeting id="1"> 
    <can> 
     <be> 
     <a> 
      <long itemNo="1"> 
      <path>Hello</path> 
      </long> 
      <long itemNo="2"> 
      <path>World</path> 
      </long> 
     </a> 
     </be> 
    </can> 
    </greeting> 
    <greeting id="2"> 
    <can> 
     <be> 
     <a> 
      <long itemNo="1"> 
      <path>Hola</path> 
      </long> 
      <long itemNo="2"> 
      <path>Mundo</path> 
      </long> 
     </a> 
     </be> 
    </can> 
    </greeting> 
</greetings> 

XSL

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="html"/> 

    <xsl:template match="greetings"> 
    <xsl:apply-templates select="greeting[@id &gt; 1]"/> 
    </xsl:template> 

    <xsl:variable name="testVar" select="/greetings/greeting/can/be/a/long[@itemNo=1]" /> 

    <xsl:template match="greeting"> 
    <html> 
     <body> 
     <h1> 
      <xsl:value-of select="$testVar/path"/> 
     </h1> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

答えて

1

あなたのテンプレートにtestVar宣言を移動し、現在の場所からの相対、それを使用することによってこれを行うことができます。

あなたが持っている通り、testVarは、単にそのパスを持つノードのすべてと評価されます。そのうちの2つがあります。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="html"/> 

    <xsl:template match="greetings"> 
    <xsl:apply-templates select="greeting[@id &gt; 1]"/> 
    </xsl:template> 

    <xsl:template match="greeting"> 
    <xsl:variable name="testVar" select="can/be/a/long[@itemNo=1]" /> 
    <html> 
     <body> 
     <h1> 
      <xsl:value-of select="$testVar/path"/> 
     </h1> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

あなたはノードセットで2番目の項目にアクセスしたい場合だけFYI、あなたがそうするように[2]を使用することができます:$testVar[2]/pathが、あなたの例ではそうすることが、テンプレートを使用しての目的を台無しにしてしまいます。

関連する問題