嗨,我
搜索了所有找不到任何答案或解决方案的地方,我需要这样做的方法;我的要求是我有这样的XML
<mail>
<hotel>
<name>asd</name>
<cost>50</cost>
</hotel>
<hotel>
<name>sdesd</name>
<cost>60</cost>
</hotel>
<totalcost>170</totalcost>
</mail>
我有这样的 XSLT 文件
<xsl:template match="/">
<html>
<xsl:for-each select="mail/hotel">
<tr>HOTEL NAME : <xsl:valueof select="name"></tr>
<tr>COST <xsl:valueof select="cost"></tr>
</xsl:for-each>
<tr>TOTAL COST WITH TAX <xsl:valueof select="mail/totalcost"></tr>
<tr>TAX <b><xsl:valueof select="_____"></b></tr> (for this place I want to calculate cost values comeing under hotel child and set)
</html>
</xsl:template>
就像在 Java 中一样,我们初始化 globe 变量并在 for 循环中设置增量值,并使用循环的最终结果,我如何在此 XSLT 中做到这一点?
如果你想计算一个总和,那么使用例如 <xsl:value-of select="sum(mail/hotel/cost)"/>
.
变量是 xslt 中的"值",您只能设置一次。
对于常见操作,请查找语言操作,例如 sum(),它应该适合您的示例。
如果您需要更复杂的东西,您可以使用带有变量的模板递归调用。
例如
<xsl:template match="/" name="operation">
<xsl:param name="value">0</xsl:param>
<xsl:if test="$count < 100">
<xsl:call-template name="operation">
<xsl:with-param name="value" select="$value + 1"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$count >= 100">
<xsl:value-of select="$value"/>
</xsl:if>
</xsl:template>