使用xslt将多个xml元素的值连接成单个元素

时间:2014-05-22 09:43:23

标签: xml xslt xslt-1.0

我的源xml文件包含以下格式的元素:

<field name="Address1">Address1Value</field>
<field name="Address2">Address2Value</field>
<field name="Address3">Address3Value</field>

我需要将它们合并为一个元素,因此:

<field name="Address">Address1Value\r\nAddress2Value\r\nAddress3Value</field>

我知道如何获取Address1元素的值(如下所示),我只是无法弄清楚如何用其他两个来增加它。我怎么能这样做?

<xsl:template match="field[@name = 'Address1']">
    <field>
        <xsl:attribute name="name">Address</xsl:attribute>
        <xsl:value-of select="concat(., 'how-do-I-get-the-values-of-Address2-and-Address-here3?')"/>
    </field>
</xsl:template>

2 个答案:

答案 0 :(得分:5)

你可以使它更通用(假设字段元素的父元素是字段):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="fields">
    <field>
        <xsl:attribute name="name">Address</xsl:attribute>
        <xsl:apply-templates select="node()"/>
    </field>
</xsl:template>
<xsl:template match="field[starts-with(@name, 'Address')]">
    <xsl:value-of select="concat(.,'\r\n')"/></xsl:template>
</xsl:stylesheet>

答案 1 :(得分:1)

我把它解决了,就像这样:

<xsl:value-of select="concat(., ../field[@name = 'Address2'], ../field[@name = 'Address3'])"/>