2012-04-19 4 views
1

私は次のXSLスタイルシート実行している問題があります:次のXMLを介しXSL変換とXPath

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="Blokea"> 
    <xsl:param name="Handiena" select="Blokea/Bl2"> 
     <xsl:if test="Blokea/Bl1>Blokea/Bl2"> 
    <xsl:param name="Handiena" select="Blokea/Bl1"> 
     <xsl:value-of select="$Handiena"/> 
     </xsl:if> 
</xsl:template> 
</xsl:stylesheet> 

を:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Erroa> 
    <Blokea> 
     <Bl1>20</Bl1> 
     <Bl2>10</Bl2> 
    </Blokea> 
</Erroa> 

私はそれを解決できますか?私はあなたが何をしようとして考える

答えて

1

はこれです:私が間違っている場合

<xsl:template match="Blokea"> 
    <xsl:param name="Handiena"> 
    <xsl:choose> 
     <xsl:when test="./Bl1 &gt; ./Bl2"> 
     <xsl:value-of select="./Bl1"/> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:value-of select="./Bl2"/> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:param> 
<xsl:value-of select="$Handiena"/> 
</xsl:template> 

は私を修正します。

+0

ありがとうございます@hroptatyr – Haritz

+0

エラーの説明はありませんが、正解です。 XSLTコーディングの多くのエラーと同様に、相対パス式を記述するときにコンテキストノードが何であるかを考えるのは失敗です。 –

+0

また、OPがやろうとしていたやり方では、xsl:paramsを再定義することはできません。また、xsltはxmlなので、タグは閉じなければなりません。 – hroptatyr