如何使用XSLT在XML指定位置添加固定值新元素
实现方法
你现有的身份模板(Identity Template)已经实现了其他内容的原样复制,只需要新增一个匹配m2:custDetails节点的模板,在输出该节点前插入硬编码的新元素即可。
完整可用的XSLT代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:m2="http://www.w3.org/2001/XMLSchema-instance"> <xsl:output method="xml" encoding="utf-8" indent="yes"/> <!-- Identity template : copy all text nodes, elements and attributes --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template> <!-- 匹配custDetails节点,插入新元素后再复制该节点 --> <xsl:template match="m2:custDetails"> <m2:overrideScriptName>NewScript</m2:overrideScriptName> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet>
逻辑说明:
- 原有身份模板保持不变,负责原样复制所有不需要修改的节点、属性、文本内容
- 新增的模板命中
m2:custDetails节点后,先输出你需要的硬编码元素,再原样复制当前m2:custDetails节点的全部内容,自然就实现了新元素插在m2:custDetails前面的效果 - 你之前直接写在
xsl:stylesheet根节点下的m2:overrideScriptName是无效代码,不会插入到目标XML的指定位置,记得删除
内容的提问来源于stack exchange,提问作者Ti J
相关产品推荐
相关产品推荐

