gpt4 book ai didi

xslt - 使用 xsl :choose 动态定义 XSLT 变量

转载 作者:行者123 更新时间:2023-12-04 00:43:18 24 4
gpt4 key购买 nike

在我的 XSLT 电子表格中,我需要根据 xml 节点的值定义一个具有一个或另一个值的 xsl:variable。下面的代码显示了我正在尝试做的事情。我想以这种方式定义多个变量。

一个主要问题是,为了根据每个项目的节点值选择变量值,必须在 xsl:foreach 中完成选择,并且每当我尝试在 xsl:foreach 中定义变量时,它都会显示错误。

<xsl:for-each select="WORKS/item">

<xsl:variable name="rate1">
<xsl:choose>
<xsl:when test="rental='new'">
<xsl:value-of select="'.15'" />
</xsl:when>
<xsl:when test="rental='used'">
<xsl:value-of select="'.30'" />
</xsl:when>
</xsl:choose>
</xsl:variable>

<xsl:variable name="rent1" select="{$rate1}">

我想通过更改变量值来实现这一点的原因是,这些变量随后用于数学函数中,该函数将变量乘以节点值(价格),该值与每个 .以下是定义后的变量将如何使用。非常感谢。
    <div class="rental-period">1-4 Days:</div>
<div class="rental-price"><em>$ <xsl:value-of select='format-number( (100*(price * $rent1) div 100), "###.00" )'/></em></div>

<div class="rental-period">5-7 Days:</div>
<div class="rental-price"><em>$ <xsl:value-of select='format-number( (100*(price * $rent2) div 100), "###.00" )'/></em></div>

<div class="rental-period">8-14 Days:</div>
<div class="rental-price"><em>$ <xsl:value-of select='format-number( (100*(price * $rent3) div 100), "###.00" )'/></em></div>

更新:
好的。我已经尝试过 Dark Falcon 提供的解决方案,但它一直给我一个错误“开始和结束标签不匹配”。和以前一样的错误。它似乎不喜欢 xsl:choose 我拥有它的地方,因为这些行号是错误的来源。这是所有相关的样式表代码:
<xsl:template name="showPrice">
<xsl:param name="rentalRate"/>
<div class="rental-price"><em>$ <xsl:value-of select='format-number( (100*(price * $rentalRate) div 100), "###.00" )'/></em></div>
</xsl:template>


<xsl:template match="/">

<xsl:for-each select="WORKS/item">

<div class="rental-info">

<xsl:choose>
<xsl:when test="rental='new'">
<xsl:call-template name="showPrice">
<xsl:with-param name="rentalRate" select="'.15'">
</xsl:call-template>
</xsl:when>
<xsl:when test="rental='used'">
<xsl:call-template name="showPrice">
<xsl:with-param name="rentalRate" select="'.30'">
</xsl:call-template>
</xsl:when>
</xsl:choose>

</div>

</xsl:for-each>

</xsl:template>

最佳答案

我认为您的初始代码唯一的错误基本上如下:

<xsl:variable name="rent1" select="number($rate1)">

(否 {} 因为它是 select,并且您可能希望该变量中有一个数字,而不是字符串。)

所以这将是这样的:
<xsl:variable name="rate1">
<xsl:choose>
<xsl:when test="rental='new'">0.15</xsl:when>
<xsl:otherwise>0.30</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rent1" select="number($rate1)">

关于xslt - 使用 xsl :choose 动态定义 XSLT 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com