如何使用XSLT处理XML元素值:移除或替换指定标签
XSLT处理XML中元素内特定标签的移除与替换方案
要实现保留原XML结构,仅处理
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 身份模板:复制所有未被自定义模板匹配的节点 --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- 移除<br/>、<suffix/>、<list/>标签 --> <xsl:template match="Value/br | Value/suffix | Value/list"/> <!-- 将<prefix>替换为" .",闭合标签也替换为" ." --> <xsl:template match="Value/prefix"> <xsl:text> .</xsl:text> <xsl:apply-templates/> <xsl:text> .</xsl:text> </xsl:template> <!-- 将<bulletlist>替换为<ul>,闭合标签替换为</ul> --> <xsl:template match="Value/bulletlist"> <ul> <xsl:apply-templates/> </ul> </xsl:template> </xsl:stylesheet>
模板逻辑说明
- 身份模板:作为基础,确保原XML的所有结构(包括
、 、 、 等节点)完全保留,仅当遇到匹配到的目标标签时才执行自定义逻辑。 - 移除标签模板:匹配
下的
、、 - ,模板内无输出,直接移除这些标签。
替换模板 :匹配下的 元素,输出" ."后递归处理其内部内容,最后再输出" .",实现前后添加指定字符串的效果。 替换模板 :匹配下的 元素,将其替换为 - 标签,并保留内部内容。
输入输出验证
输入XML(你提供的示例)经过上述XSLT转换后,会得到你期望的输出结果:
<Value><br/>test</Value>→<Value>test</Value><Value><prefix>test2</prefix></Value>→<Value> .test2 .</Value><Value><suffix/>test3</Value>→<Value>test3</Value><Value><list/><bulletlist>test4</bulletlist></Value>→<Value><ul>test4</ul></Value>
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

