使用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
相关产品推荐
相关产品推荐

