Xslt XSL转换和XPath

Xslt XSL转换和XPath,xslt,xpath,Xslt,Xpath,我在运行下一个XSL样式表时遇到问题: <?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样式表时遇到问题:

<?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中:

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

20
10

我该怎么解决呢?

我想你要做的是:

<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>


如果我错了,请纠正我。

我想你想做的是:

<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>


如果我错了,请纠正我。

非常感谢@hroptatyrCorrect回答,尽管没有解释错误。与XSLT编码中的许多错误一样,在编写相对路径表达式时,没有考虑上下文节点是什么。此外,xsl:params不能像OP尝试的那样重新定义。而且,xslt是xml,所以标记必须关闭。@hroptatyr您能看看这个问题吗-。我还在java中对xml签名使用xpath转换,但转换似乎没有发生。非常感谢@hroptatyrCorrect,尽管没有解释错误。与XSLT编码中的许多错误一样,在编写相对路径表达式时,没有考虑上下文节点是什么。此外,xsl:params不能像OP尝试的那样重新定义。而且,xslt是xml,所以标记必须关闭。@hroptatyr您能看看这个问题吗-。我还在java中对xml签名使用xpath转换,但转换似乎没有发生。