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

字段名的XSLT串联+;动态变量名访问的参数值,xslt,Xslt,我们有一个XML文件,我们正试图找出一种动态使用的方法 基本原则如下: <part> <...> <fldMinPriceUSD>100.00</fldMinPriceUSD> <fldMaxPriceUSD>110.00</fldMaxPriceUSD> <fldMinPriceCAD>120.00</fldMinPriceCAD> <fldMaxPriceCAD>130.00</

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

基本原则如下:

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

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

你就快到了。目前,通过使用str@name可以查找名为str的元素,该元素的属性名为name,值为“fldMinPriceUSD”。您需要的是local-name()函数,以及node()来匹配任何节点

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


i、 e.匹配任何节点,名称(不包括名称空间)为“fldMinPrice”+货币代码。

你们是天才。所以,我最初的评估有点错误。我们实际的XML看起来是这样的(我从内存中输入了另一部分…我一定在某个地方有一些损坏的内存…必须将其替换):

20.0
19
18
17.1
所以,蒂姆C。。。你的答案很完美。。。对于XML的另一部分,我正试图用它做同样的事情。empo,你的例子让我注意到我原来的帖子几乎是正确的,除了我有一个str,我应该有一个double。把str改成了double,瞧


所以,我欠你们一杯啤酒(除非你们不想分享,在这种情况下,我会给你们每人一杯)谢谢

是的,他实际上是在寻找,例如,
,这肯定不是想要格式化的节点+1.
<xsl:value-of select="format-number(node()[local-name()=concat('fldMinPrice', $dealerCurrency)], '#.00')"/>
<double name="fldMaxPrice">20.0</double>
<double name="fldMaxPriceCAD">19.0</double>
<double name="fldMinPrice">18.0</double>
<double name="fldMinPriceCAD">17.1</double>