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

如何在多tag1节点的XML中提取指定rel的link标签href

问题解决:提取每个tag1节点下符合条件的link的href

问题根源

你当前的XSL代码里,//link[contains(@rel, 'icon')]是全局搜索整个XML文档内的link标签,而非在当前遍历的tag1节点范围内查找。这就导致两个问题:

  • 每个tag1循环都会输出所有符合条件的link,而非当前tag1下的目标链接
  • 变量iconLink只会拿到全局第一个符合条件的href,无法匹配当前tag1对应的链接

修正后的XSL代码

<xsl:for-each select="tag1">
    <div>
        <!-- 仅遍历当前tag1节点下rel含"icon"的link -->
        <xsl:for-each select="link[contains(@rel, 'icon')]">
            <p>
                Link: <xsl:value-of select="@href"/>
            </p>
        </xsl:for-each>

        <!-- 获取当前tag1下第一个符合条件的link的href -->
        <xsl:variable name="iconLink" select="link[contains(@rel,'icon')]/@href" />
        <div>
            <xsl:if test="$iconLink">
                <img src="{$iconLink}" alt="icon" />
            </xsl:if>
        </div>
    </div>
</xsl:for-each>

关键改动说明

  • 移除XPath中的//,改用link[contains(@rel, 'icon')]:表示在**当前上下文(即正在遍历的tag1节点)**下直接查找子节点link
  • 如果link并非tag1的直接子节点(比如嵌套在其他标签内),可替换为.//link[contains(@rel, 'icon')],其中.代表当前节点,会在当前tag1的所有后代节点中搜索目标link

补充调整

如果每个tag1下可能存在多个符合条件的link,当前内部for-each已能全部展示;若仅需取第一个符合条件的链接,可把变量的select语句改为link[contains(@rel,'icon')][1]/@href。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:20:16