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

如何优化XSLT将XML文本转换为Markdown格式的逻辑?

解决XSLT 1.0转换XML含节点到Markdown的问题

首先,假设你的输入XML结构类似这样(若实际结构不同,可对应调整模板匹配规则):

<root>
  <content>
    这是待转换的<bold>加粗文本</bold>,这里还有<bold>另一处加粗</bold>内容,普通文本也需完整保留。
  </content>
</root>

你的输出仅为“textimprovement”,大概率是原XSLT未递归处理XML中的所有节点,仅提取了固定文本或错误匹配节点所致。以下是修正后的XSLT 1.0代码,可正确将<bold>节点转换为Markdown的**加粗格式:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 匹配根节点,触发所有子节点的模板处理 -->
  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>

  <!-- 匹配<bold>节点,输出Markdown加粗语法,同时递归处理内部内容 -->
  <xsl:template match="bold">
    <xsl:text>**</xsl:text>
    <xsl:apply-templates/>
    <xsl:text>**</xsl:text>
  </xsl:template>

  <!-- 匹配普通文本节点,直接输出内容 -->
  <xsl:template match="text()">
    <xsl:value-of select="."/>
  </xsl:template>

  <!-- 匹配其他元素节点,递归处理其子节点,避免丢失内容 -->
  <xsl:template match="*">
    <xsl:apply-templates/>
  </xsl:template>
</xsl:stylesheet>

关键修正说明

  • 增加递归模板处理:通过<xsl:apply-templates/>遍历所有子节点,确保不会遗漏任何文本或嵌套元素
  • 针对<bold>节点定制转换规则:直接替换为Markdown加粗语法,同时支持<bold>内部嵌套其他节点的场景
  • 保留普通文本输出逻辑:确保非格式化文本完整呈现

转换效果示例

用上述XSLT处理示例XML,输出结果为:

这是待转换的加粗文本,这里还有另一处加粗内容,普通文本也需完整保留。

若你的XML结构不同(比如<bold>嵌套在自定义节点下),只需调整模板的match属性,确保能正确命中目标节点即可。

内容的提问来源于stack exchange,提问作者Marco S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:15:45