使用XSLT为XML添加CARRIER元素并赋值ABF的问题求助
问题根因
你当前的XSLT中创建CARRIER元素时未填充固定值ABF,导致该标签为空,无法满足第三项需求。
修改后的完整XSLT代码
<?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"> <QUOTETENDER> <!-- 直接填充CARRIER的固定值ABF --> <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>
说明:因为元素名是固定值,不需要动态生成,所以直接写静态标签
<CARRIER>ABF</CARRIER>比用<xsl:element>语法更简洁易读,运行效果完全一致。
可选适配优化
如果你后续需要兼容不同的原根节点名称,不想硬写ABF,可以将CARRIER的赋值改为动态取原根节点名:
<CARRIER><xsl:value-of select="name(.)"/></CARRIER>
修改后XSLT会自动提取当前匹配的原根节点名称填充到CARRIER元素中,适配性更强。
内容的提问来源于stack exchange,提问作者Tyler Durden
相关产品推荐
相关产品推荐

