如何使用XSL实现局部小写转大写且不改动内部元素节点
XSL转换实现方案
需求核心是保留所有标签结构仅修改文本内容,基于XSLT恒等转换模板扩展即可,仅针对文本节点做字符替换,其他所有节点、属性原样复制。
完整可运行XSL代码
<?xml version="1.0" encoding="UTF-8"?> <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> <!-- 仅处理文本节点:将所有小写g替换为大写G --> <xsl:template match="text()"> <xsl:value-of select="translate(., 'g', 'G')"/> </xsl:template> </xsl:stylesheet>
逻辑说明
- 恒等转换模板默认复制所有元素、属性、注释等内容,保证
<b>、<i>这类内部标签完全保留不会被修改 - 文本节点专属模板仅处理纯文本内容,调用
translate()方法完成小写g到大写G的替换,其余字符不受影响 - 代码适配XSLT 1.0及以上所有版本,兼容性强,不需要额外配置即可生效,测试匹配示例输入可直接输出预期结果
内容的提问来源于stack exchange,提问作者Shanmugalakshmi
相关产品推荐
相关产品推荐

