用于动态变量名称访问的字段名 + 参数值的 XSLT 串联

标签 xslt

我们有一个 XML 文件,我们正试图找出一种动态使用的方法。

基本知识是这样的:

<part>
<...>
<fldMinPriceUSD>100.00</fldMinPriceUSD>
<fldMaxPriceUSD>110.00</fldMaxPriceUSD>
<fldMinPriceCAD>120.00</fldMinPriceCAD>
<fldMaxPriceCAD>130.00</fldMaxPriceCAD>
</part>

对于我们拥有的每个零件,我们希望在其上使用 xslt 以根据通过参数发送的货币获取零件价格。我们不想使用 if-elses,因为我们可能希望在不更改模板的情况下增加货币列表(欧元、英镑等)。

所以,我们想使用 $dealerCurrency参数(即美元、加元等)与 fldMinPrice 连接以获取该值。这种事情甚至可能吗?我已经尝试了很多东西,但似乎都不起作用。

到目前为止我尝试过的是:
<xsl:value-of select="format-number(str[@name=concat('fldMinPrice', $dealerCurrency)], '#.00')"/>

这似乎不起作用。有什么建议?

最佳答案

你快到了。目前,通过使用 str @name 您正在寻找一个名为 的元素str 它有一个名为 的属性姓名 值为“fldMinPriceUSD”。您需要的是本地名称()函数,以及 节点()匹配任何节点。

<xsl:value-of select="format-number(node()[local-name()=concat('fldMinPrice', $dealerCurrency)], '#.00')"/>

即匹配任何节点,名称(不包括命名空间)为“fldMinPrice”+您的货币代码。

关于用于动态变量名称访问的字段名 + 参数值的 XSLT 串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015696/

相关文章:

css - XSL 和 CSS 的区别

php - xsl文件从linux服务器加载到php中

xml - 如何在 XSLT 中获取字符串的最后一个字符

date - xslt 2.0 将当前日期与开始和结束日期进行比较

xslt - 在另一个 XSL 样式表中引用

java - Spring xslt 处理适用于字符串,但不适用于 dom

xml - 如何在 xsl-fo 中的元素后分页

java - 进行 XML 转换时获取 "UTFDataFormatException: encoded string too long"

xml - 在 XSLT 中查找两个日期时间之间的差异

客户端 XSL 处理中的 JavaScript?