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

如何使用XSLT将XML产品名称拆分转换为指定HTML结构?

没问题,咱们可以用XSLT的模板匹配和字符串拆分功能轻松实现这个转换。下面是完整的解决方案:

完整XSLT代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 匹配文档根节点,遍历所有product元素 -->
    <xsl:template match="/">
        <xsl:apply-templates select="product"/>
    </xsl:template>

    <!-- 匹配每个product元素,处理name文本拆分 -->
    <xsl:template match="product">
        <h1>
            <!-- 提取第一个空格前的内容(即"Smartphone") -->
            <xsl:value-of select="substring-before(name, ' ')"/>
            <!-- 提取第一个空格后的内容(即"Samsung S6"/"Samsung S8") -->
            <small><xsl:value-of select="substring-after(name, ' ')"/></small>
        </h1>
    </xsl:template>
</xsl:stylesheet>

工作原理拆解

  • 根模板:匹配整个XML文档,然后调用所有product元素的模板进行处理。
  • product模板:针对每个产品,我们用substring-before和substring-after两个字符串函数,以空格为分隔符,把name里的内容拆成两部分:
    • substring-before(name, ' '):取空格之前的文本,也就是Smartphone,直接放在<h1>标签内。
    • substring-after(name, ' '):取空格之后的剩余文本,也就是Samsung S6或Samsung S8,把它嵌套在<small>标签里,再放到<h1>内。

测试效果

注意:标准XML必须有且仅有一个根节点,所以我给你的输入XML补了根节点<products>,否则XSLT可能无法正常解析:

<products>
    <product> <name>Smartphone Samsung S6</name> </product>
    <product> <name>Smartphone Samsung S8</name> </product>
</products>

用上面的XSLT处理后,会得到你想要的HTML输出:

<h1>Smartphone<small>Samsung S6</small></h1>
<h1>Smartphone<small>Samsung S8</small></h1>

如果后续产品名称的空格分隔逻辑有变化,还可以用XSLT 2.0及以上支持的tokenize函数做更灵活的拆分,不过针对你给出的示例,上面的代码完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:16:59