Concat是一个xsl中带有变量的xml节点

时间:2012-07-13 14:15:27

标签: xml xslt path concat

嗨我需要用一个变量连接一个xsl节点路径,在xslt中有一个dinamic节点路径。

我有这个节点:

<PRODOTTI>
  <ITEM STATO="2">
</PRODOTTI>
<STATI>
  <COD0>Errore</COD0>
  <COD1>In spedizione entro le prossime 12-24 ore</COD1>
  <COD2>In spedizione entro le prossime 24-48 ore</COD2>
 </STATI>

在xsl中我有

<xsl:variable name="stato_ordine" select="@STATO"/>
<xsl:variable name="ordine" select="concat(../../../TRADUZIONI/STATI/COD, $stato_ordine)" />
<xsl:value-of select="$ordine"></xsl:value-of>

但在输出中我只得到“stato_ordine”值,而不是我需要完整的路径来获取节点值。

无论如何都有这个吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

我想你想要<xsl:value-of select="../../../TRADUZIONI/STATI/*[local-name() = concat('COD', $stato_ordine)]"/>

[编辑] 要获得更有效的解决方案,您可以将密钥定义为xsl:stylesheet

的子级
<xsl:key name="k1" match="STATI/*[starts-with(local-name(), 'COD')]" use="substring(local-name(), 4)"/>

然后做

<xsl:value-of select="key('k1', $stato_ordine)"/>

应该足够了。