-1

我有看起来像这样的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>

稍后,对于每个我迭代这些字段,我尝试获取字段的名称(相同)并将其与索引属性连接(这取决于可能变化的元素数量)。

我试过这个(我把撇号放在变量中,因为我不知道如何逃避它)。

<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 的值等。我需要的是动态连接名称属性和索引属性。

4

2 回答 2

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

我希望这有帮助。否则在评论中给我一个提示。

于 2012-07-10T08:29:22.293 回答
0

答案很简单:

此代码采用索引 attr 并将其连接到名称。

于 2012-07-10T13:21:47.913 回答