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

使用XSL IF判断XML中元素是否存在的XSLT实现问询

XSLT实现遍历XML并检查元素是否存在

我来帮你写一个适配需求的XSLT文件,它会遍历你提供的XML数据,逐个处理每个<person>节点,同时检查该节点下是否存在<joined>元素,最后把结果清晰地展示出来。

完整XSLT代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 根模板,匹配<club>节点 -->
    <xsl:template match="/club">
        <html>
            <body>
                <h2>俱乐部成员信息</h2>
                <!-- 遍历所有<person>节点 -->
                <xsl:for-each select="person">
                    <div style="border:1px solid #ccc; padding:10px; margin:10px 0;">
                        <p>姓名: <xsl:value-of select="name"/></p>
                        <p>排名: <xsl:value-of select="ranking"/></p>
                        <p>国籍: <xsl:value-of select="nationality"/></p>
                        <!-- 检查当前<person>下是否存在<joined>元素 -->
                        <xsl:choose>
                            <xsl:when test="joined">
                                <p>加入年份: 
                                    <!-- 如果有多个<joined>,遍历输出 -->
                                    <xsl:for-each select="joined">
                                        <xsl:value-of select="."/><xsl:if test="position() != last()">, </xsl:if>
                                    </xsl:for-each>
                                </p>
                            </xsl:when>
                            <xsl:otherwise>
                                <p><em>未记录加入年份</em></p>
                            </xsl:otherwise>
                        </xsl:choose>
                    </div>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

代码说明

  • 根模板匹配<club>节点,生成一个简单的HTML页面来展示结果,这样查看起来更直观
  • 使用<xsl:for-each select="person">遍历所有成员节点
  • 对于每个成员,先输出姓名、排名、国籍这些基础信息
  • 通过test="joined"判断当前成员是否有<joined>元素:
    • 如果存在,就遍历所有<joined>节点,把所有加入年份用逗号分隔输出
    • 如果不存在,就输出未记录加入年份的提示

转换效果

用这个XSLT处理你提供的XML文件后,会生成如下结构的HTML内容:

俱乐部成员信息

姓名: name
排名: 1
国籍: spanish
加入年份: 2007, 2009


姓名: name
排名: 2
国籍: english
未记录加入年份

这样就能清晰看到每个成员是否有加入年份的记录啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:47:57