You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XSLT转换HTML文本为大写时如何保留原有标签层级结构

你现有代码丢失标签结构的原因是,xsl:value-of 只会提取节点的纯文本内容,直接丢弃了所有元素标签,且仅匹配根节点的模板没有处理嵌套的元素层级。

可通过XSLT恒等变换(身份模板)实现保留结构的文本转大写,修复后的完整代码如下:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output encoding="UTF-8" indent="no" method="xhtml" standalone="0" version="1.0"/>

  <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'"/>
  <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>

  <!-- 恒等模板:原样复制所有节点、属性、结构 -->
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <!-- 仅处理文本节点:转换为大写 -->
  <xsl:template match="text()">
    <xsl:value-of select="translate(., $smallcase, $uppercase)"/>
  </xsl:template>

</xsl:transform>

逻辑说明

  • 恒等模板会匹配所有元素、属性、注释、处理指令等非文本节点,执行复制操作,完全保留原有的标签层级、属性、结构不变
  • 第二个模板仅匹配文本节点,对文本内容执行大小写转换,不会影响其他节点的处理逻辑
  • 所有转换完全兼容XSLT 1.0版本,不需要额外依赖

内容的提问来源于stack exchange,提问作者Lorenzo Bellemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 22:15:04