我需要使用XSLT将货币(USD转换为GPB)。
目前实际汇率无关紧要。 (例如,英镑为1.35美元)
以下是我的XML示例:
<prices>
<price mutable="true" packageRate="false">
<totalPrice currencyCode="USD" fairPricesIncluded="false" groupDiscountAmount="0.00">88.30</totalPrice>
<dates>
<date>
<dailyPrice currencyCode="USD" fairPrice="false" priceChangeDate="2014-02-26" priceType="1">44.15</dailyPrice>
</date>
<date>
<dailyPrice currencyCode="USD" fairPrice="false" priceChangeDate="2014-02-26" priceType="1">65.70</dailyPrice>
</date>
</dates>
</price>
</prices>
这是我编写的xslt以获取我需要的值:
<table>
<xsl:for-each select="prices/price/dates/date">
<tr>
<td>
<xsl:value-of select="dailyPrice/@currencyCode"/>
<xsl:text> </xsl:text>
<xsl:value-of select="dailyPrice"/>
</td>
</tr>
</xsl:for-each>
</table>
<table>
<xsl:for-each select="prices/price">
<tr>
<td>
<xsl:value-of select="totalPrice/@currencyCode"/>
<xsl:text> </xsl:text>
<xsl:value-of select="totalPrice"/>
</td>
</tr>
</xsl:for-each>
</table>
那么通过xslt转换xml以获取GBP而不是USD以及根据汇率(1.35)获取totalPrice和dailyPrice元素的新值的正确方法是什么?
预期输出为:
答案 0 :(得分:1)
尝试类似:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:param name="currency" select="'GBP'"/>
<xsl:param name="rate" select="1.35"/>
<xsl:template match="/prices">
<table border="1">
<tr>
<th>Prices</th>
</tr>
<xsl:for-each select="price/dates/date">
<tr>
<td>
<xsl:value-of select="$currency"/>
<xsl:text> </xsl:text>
<xsl:value-of select="format-number(dailyPrice * $rate, '0.00')"/>
</td>
</tr>
</xsl:for-each>
<tr>
<th>Total</th>
</tr>
<tr>
<td>
<xsl:value-of select="$currency"/>
<xsl:text> </xsl:text>
<xsl:value-of select="format-number(price/totalPrice * $rate, '0.00')"/>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
应用于您的输入示例,将返回:
<table border="1">
<tr>
<th>Prices</th>
</tr>
<tr>
<td>GBP 59.60</td>
</tr>
<tr>
<td>GBP 88.70</td>
</tr>
<tr>
<th>Total</th>
</tr>
<tr>
<td>GBP 119.20</td>
</tr>
</table>
渲染: