xslt连接字段添加回来

时间:2014-04-17 17:29:48

标签: xslt concatenation

首先,我对XSLT并不擅长。有人可以帮我这个吗?

如何连接节点中的两个字段,然后将其作为新字段添加到原始字段? 实施例

<Contacts>
 <Contact>
  <fName>Mickey</fName>
  <lName>Mouse</lName>
 </Contact>
<Contact>
 <fName>Daisy</fName>
 <lName>Duck</lName>
</Contact>
</Contacts>

<Contacts>
  <Contact>
   <fName>Mickey</fName>
   <lName>Mouse</lName>
   <fullName>MickeyMouse</fullName>
 </Contact>
 <Contact>
  <fName>Daisy</fName>
  <lName>Duck</lName>
  <fullName>DaisyDuck</fullName>
  </Contact>
 </Contacts>

提前感谢,

2 个答案:

答案 0 :(得分:1)

您想要一个带有变体的副本。这是在XSLT中以惯用方式完成的,首先使用身份模板,该模板完全复制节点,然后将其覆盖在您想要变体的位置。

以下转换

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes" />

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="Contact">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*" />
            <fullName><xsl:value-of select="concat(fName, lName)"/></fullName>
        </xsl:copy>
    </xsl:template>

</xsl:transform>

应用于您的输入,给出想要的结果:

<Contacts>
    <Contact>
        <fName>Mickey</fName>
        <lName>Mouse</lName>
    <fullName>MickeyMouse</fullName></Contact>
    <Contact>
        <fName>Daisy</fName>
        <lName>Duck</lName>
    <fullName>DaisyDuck</fullName></Contact>
</Contacts>

希望这有帮助。

答案 1 :(得分:0)

您创建一个与联系人匹配的模板,如下所示:

<xsl:template match="Contact">
  <Contact>
    <xsl:copy-of select="*"/>
    <fullName><xsl:value-of select="concat(fName, ' ',lName)"/></fullName>
  </Contact>
</xsl:template>