简体   繁体   English

使用XSLT重命名XML子级-XSLT 1.0

[英]Rename XML child using XSLT - XSLT 1.0

does anyone know how I can rename a tag using XSLT? 有谁知道我如何使用XSLT重命名标签?

In my example I copy the tag "NUMBER" from "CONTACT/NUMBER" at the Tag "ADD" to "GRP". 在我的示例中,我将标签“ ADD”中的“ CONTACT / NUMBER”中的标签“ NUMBER”复制到“ GRP”中。 But now I also want the copied Tag "NUMBER" at "GRP" to be called "CONTACT_NUMBER" instead of "NUMBER". 但是,现在我还希望将在“ GRP”复制的“ NUMBER”标签称为“ CONTACT_NUMBER”,而不是“ NUMBER”。

 <xsl:template match="GRP"> <xsl:copy> <!--copy the data from ADD - CN to the GRP so it can be used in the mapping to set the delivery address from end customer--> <xsl:for-each select ="./ADD"> <xsl:if test="./QUALIFIER='CN'"> <xsl:copy-of select="PARTY_NAME_1"/> <xsl:copy-of select="STREET_1"/> <xsl:copy-of select="CITY"/> <xsl:copy-of select="POSTAL_CODE"/> <xsl:copy-of select="COUNTRY_CODE"/> <xsl:copy-of select="CONTACT/NUMBER"/> </xsl:if> </xsl:for-each> <!--copy all other nodes--> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> 

Result: 结果:

PARTY_NAME_1 PARTY_NAME_1

STREET_1 STREET_1

... CONTACT_NUMBER (instead of "NUMBER") ... CONTACT_NUMBER(而不是“ NUMBER”)

Thanks, Julian 谢谢朱利安

Change 更改

<xsl:copy-of select="CONTACT/NUMBER"/>

to

<CONTACT_NUMBER>
  <xsl:value-of select="CONTACT/NUMBER"/>
</CONTACT_NUMBER>

That should do the job. 那应该做的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM