使用separator usig XSLT将不同XML元素的值合并为一个

时间:2015-08-24 04:50:30

标签: xml xslt

我有一个像这样的XML(真正的XML要复杂得多,我已将其简化以显示实际问题):

<record>
    <abstract>this is abstract information</abstract>
    <author>Vardenis Pavardenis</autor>
    <author>Steeve Jobs</autor> 
</record>

我需要将抽象和作者信息组合到一个节点中,然后用&#xa;分隔它们,结果如下:

<record>
    <description>this is abstract information`&#xa;`Author: Vardenis Pavardenis`&#xa;`Author: Steeve Jobs</description> 
</record>

问题是,作者和抽象节点的数量是未知的,可能根本没有作者或没有描述节点。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用<xsl:for-each>循环遍历<description>的所有子元素,无论其中有多少元素,并将值组合起来:

<xsl:template match="record">
  <record>
      <description>
          <xsl:for-each select="*">
            <xsl:if test="self::author">Author : </xsl:if>
            <xsl:value-of select="."/>
            <xsl:if test="position() &lt; last()">&#xa;</xsl:if>
          </xsl:for-each>
      </description>
  </record>
</xsl:template>

<强> xsltransform demo