1

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

4

2 回答 2

2

如果要计算总和,请使用 eg <xsl:value-of select="sum(mail/hotel/cost)"/>

于 2013-11-07T10:20:23.270 回答
0

变量是 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>
于 2013-11-07T10:09:41.973 回答