我的xml看起来像这样:
<field index="1" name="my_field_1" type="String">
<value>Value of Field 1</value>
</field>
<field index="2" name="my_field_2" type="String">
<value>Value of Field 2</value>
</field>
<field index="3" name="my_field_3" type="String">
<value>Value of Field 3</value>
</field>
稍后我会迭代这些字段并尝试取字段名称(相同)并将其与index属性连接(取决于可能变化的元素数量)。
我试过这个(我把撇号放在变量中,因为我不知道如何逃避它)。
<xsl:variable name="currentIndex" select="@index"></xsl:variable>
<xsl:variable name="apostrof">'</xsl:variable>
<xsl:value-of select="concat(
'//field[@name=',
$apostrof,
'sar_account_entrepreneur_name_',
@index,
$apostrof,
']/value')"/>
问题在于,而不是选择值,它只输出字符串my_field_1。 输出应该是字段1的值,字段2的值等。我需要的是将name属性与index属性动态地连接。
答案 0 :(得分:0)
以下转型
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="field">
<xsl:value-of select="value" />
</xsl:for-each>
</xsl:template>
</xsl:transform>
应用于此输入
<?xml version="1.0" ?>
<root>
<field index="1" name="my_field_1" type="String">
<value>Value of Field 1</value>
</field>
<field index="2" name="my_field_2" type="String">
<value>Value of Field 2</value>
</field>
<field index="3" name="my_field_3" type="String">
<value>Value of Field 3</value>
</field>
</root>
产生所需的
输出<?xml version="1.0"?>
Value of Field 1Value of Field 2Value of Field 3
我希望这会有所帮助。否则请在评论中给我一个提示。
答案 1 :(得分:0)
答案很简单:
此代码采用索引attr并将其合并为name。