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

如何用XSLT移除含特定href值<a>标签的<li>标签?

解决方案

要移除包含href含"older"的<a>的整个<li>,你需要直接匹配对应的<li>节点,而非仅匹配<a>。同时可额外处理空的<ul>,完整XSLT如下:

<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>

    <!-- 移除包含href含"older"的<a>的<li> -->
    <xsl:template match="li[.//a[contains(@href, 'older')]]"/>

    <!-- 可选:移除空的<ul>(无任何<li>的列表) -->
    <xsl:template match="ul[not(li)]"/>
</xsl:stylesheet>

代码说明

  • 身份模板:保留未被特殊模板匹配的所有内容,确保其他HTML结构不受影响。
  • 匹配<li>的模板:li[.//a[contains(@href, 'older')]] 定位所有后代中存在<a>且其href包含"older"的<li>,空模板意味着不输出该节点。
  • 匹配空<ul>的模板:ul[not(li)] 匹配没有子<li>的列表,同样不输出,可根据需求选择保留或删除。

测试效果

用你提供的示例HTML输入,转换后会得到:

<ul>
  <li><a href="/some/old/path">One</a></li>
  <li><a href="/other/old/path">Two</a></li>
</ul>

若所有<li>都被移除,对应的<ul>也会被删除(如果启用了空列表移除模板)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:00:11