首先,我对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>
提前感谢,
答案 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>