Xslt XSL转换和XPath
我在运行下一个XSL样式表时遇到问题: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">
<?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 > ./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 > ./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转换,但转换似乎没有发生。