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

XSL获取子节点数据问题:如何提取DESCRIPTION子节点内容?

嘿,我来帮你排查一下为啥你的XSL代码没成功提取DESCRIPTION节点的数据~

首先,咱们先分析几个最可能的原因,再给出对应的解决办法:

1. 检查当前上下文节点是否正确

你写的<xsl:for-each select="RETURN">是基于当前上下文节点来查找RETURN的,如果你的XSL模板没有匹配到XML的根节点(也就是/),那当前上下文可能不是根,自然找不到RETURN节点。

举个正确的例子,先匹配根节点,再去遍历RETURN:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 先匹配XML的根节点 -->
  <xsl:template match="/">
    <html>
      <body>
        <!-- 从根节点开始查找RETURN -->
        <xsl:for-each select="RETURN">
          <div>
            <!-- 直接提取DESCRIPTION的内容,或者用apply-templates -->
            <xsl:value-of select="DESCRIPTION"/>
          </div>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

2. 排查XML是否包含命名空间

这是最容易踩坑的点!如果你的XML里有类似xmlns="http://xxx.xxx.com"这样的命名空间声明(比如<RETURN type="object" xmlns="http://example.org">),那XSL里必须声明对应的命名空间前缀,才能正确选中节点。

比如XML带命名空间的情况,XSL要这么写:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:my="http://example.org"> <!-- 替换成你的XML实际命名空间 -->
  <xsl:template match="/">
    <html>
      <body>
        <!-- 用前缀my来选中命名空间下的RETURN -->
        <xsl:for-each select="my:RETURN">
          <div>
            <xsl:value-of select="my:DESCRIPTION"/>
          </div>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

3. 简化你的代码(可选)

其实你不需要嵌套两层<xsl:for-each>,可以直接选中RETURN/DESCRIPTION,代码更简洁:

<xsl:for-each select="RETURN/DESCRIPTION">
  <div>
    <xsl:apply-templates select="."/>
  </div>
</xsl:for-each>

甚至可以用模板匹配的方式,更符合XSL的设计思路:

<xsl:template match="RETURN/DESCRIPTION">
  <div>
    <xsl:apply-templates/>
  </div>
</xsl:template>

你可以先检查自己的XML有没有命名空间,再确认XSL的上下文是否正确,应该就能解决问题啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:37:13