我有一个 xml 文件,我想向其中添加元素 = 载体并为其指定值 = ABF。原始文件看起来像这样
<?xml version="1.0"?>
<ABF>
<QUOTEID>L9V5442611</QUOTEID>
<CHARGE>166.08</CHARGE>
<ADVERTISEDTRANSIT>1 Day</ADVERTISEDTRANSIT>
我正在使用下面的这个 xslt 文件进行以下更改
1- 添加 QUOTETENDER 作为开始和结束元素 .. 2- 删除 ABF 3- 插入一个 CARRIER 元素并赋予它 ABF 的值
我能够达到 1 和 2 但无法完成 3
我需要的结果是底部的 xml 片段
......有人可以帮忙..谢谢
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="no"/>
<xsl:template match="ABF">
<xsl:element name="QUOTETENDER">
<xsl:element name="CARRIER"></xsl:element>
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<QUOTETENDER>
<CARRIER>ABF</CARRIER>
<QUOTEID>L9V5442611</QUOTEID>
<CHARGE>166.08</CHARGE>
<ADVERTISEDTRANSIT>1 Day</ADVERTISEDTRANSIT>
</QUOTETENDER>
您只需要ABF
在 CARRIER 元素内部添加:
<xsl:element name="CARRIER">ABF</xsl:element>
您可以简化事情并使用文字元素声明,因为您的元素名称是静态的而不是动态确定的:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="no"/>
<xsl:template match="ABF">
<QUOTETENDER>
<CARRIER>ABF</CARRIER>
<xsl:apply-templates select="@*|node()"/>
</QUOTETENDER>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
您还可以使用local-name()
匹配ABF
元素的 :
<CARRIER><xsl:value-of select="local-name()"/></CARRIER>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句