全局变量在 XSLT 中使用并递增该变量值


嗨,我

搜索了所有找不到任何答案或解决方案的地方,我需要这样做的方法;我的要求是我有这样的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>

相关内容

  • 没有找到相关文章

最新更新