XSL为每个连接属性

时间:2012-07-10 07:53:36

标签: xslt xslt-1.0

我的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属性动态地连接。

2 个答案:

答案 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。