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

使用XSLT 3合并content至title并移除XML空行的技术实现请求

我帮你写了一份符合需求的XSLT 3样式表,完美解决你的转换问题,包括空行移除的处理——之前你提到的<xsl:template match="text()"/>会把所有文本内容都删掉,其实应该匹配仅包含空白字符的文本节点才对,具体内容如下:

完整XSLT 3转换代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 自动复制未专门处理的节点,简化文档结构保留逻辑 -->
    <xsl:mode on-no-match="shallow-copy"/>

    <!-- 移除所有仅含空白的文本节点,彻底消除空行 -->
    <xsl:template match="text()[normalize-space()='']"/>

    <!-- 核心处理:RECORD节点的title生成/修改逻辑 -->
    <xsl:template match="RECORD">
        <xsl:copy>
            <xsl:choose>
                <!-- 存在title节点时,追加content内容 -->
                <xsl:when test="title">
                    <title>
                        <xsl:value-of select="title/text() || '-' || content/text()"/>
                    </title>
                </xsl:when>
                <!-- 不存在title节点时,新建title并填入content内容 -->
                <xsl:otherwise>
                    <title>
                        <xsl:value-of select="content/text()"/>
                    </title>
                </xsl:otherwise>
            </xsl:choose>

            <!-- 保留RECORD下除title、content外的其他节点 -->
            <xsl:apply-templates select="*[not(self::title or self::content)]"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

代码说明

  1. <xsl:mode on-no-match="shallow-copy"/>:这是XSLT 3的简化语法,会自动复制所有我们没写模板处理的节点,不用手动写大量复制代码,节省工作量。
  2. 空行移除逻辑:text()[normalize-space()='']精准匹配那些只包含空格、换行、制表符的无效文本节点,删除它们就不会出现空行,比直接匹配所有文本节点合理得多。
  3. RECORD节点处理:
    • 先复制RECORD节点本身,保证外层结构不变;
    • 通过<xsl:choose>判断是否存在title节点:
      • 有title时,用XSLT 3的字符串连接符||把原title文本、-、content文本拼接起来,生成新的title;
      • 无title时,直接新建title节点并填入content的内容;
    • 最后保留RECORD下除了title和content之外的其他节点(如果需要保留content节点,把最后一行的select条件改成*[not(self::title)]即可)。

示例效果

假设输入XML是:

<root>
    <RECORD>
        <title>产品介绍</title>
        <content>XX型号智能音箱,支持语音交互</content>
        <category>智能家居</category>
    </RECORD>
    <RECORD>
        <content>2024年度技术峰会将于10月召开</content>
        <date>2024-10-15</date>
    </RECORD>
</root>

转换后的输出XML:

<root>
    <RECORD>
        <title>产品介绍-XX型号智能音箱,支持语音交互</title>
        <category>智能家居</category>
    </RECORD>
    <RECORD>
        <title>2024年度技术峰会将于10月召开</title>
        <date>2024-10-15</date>
    </RECORD>
</root>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:02:40