如何在XSL的apply-template中仅在最后一个同级节点后创建div元素
解决方案
你可以通过XPath判断当前节点是否为最后一个同级Lion节点,有两种常用实现方式:
方法1:使用position()+last()组合判断
适配你当前的场景,你是直接选中所有Mammal/Lion节点按文档顺序处理,直接判断当前节点在选中节点集中的位置是否为最后一位即可,写法更简洁:
<!-- 修正你原代码的模板结束标签笔误,原来的</xsl:kingdom>是错误写法 --> <xsl:template match="kingdom"> <xsl:apply-templates select="Mammal/Lion"></xsl:apply-templates> </xsl:template> <xsl:template match="Mammal/Lion"> <!-- 原有处理Lion节点的逻辑,例如输出节点数值等,可根据你的需求补充 --> <p>Lion数值:<xsl:value-of select="."/></p> <!-- 仅最后一个同级节点输出div --> <xsl:if test="position() = last()"> <div>All mamals are printed</div> </xsl:if> </xsl:template>
方法2:使用following-sibling判断
如果你的apply-templates存在过滤条件、不是选中所有Lion节点,更推荐用这种方法,直接判断当前节点后是否还有同名称的同级节点,不受节点选择规则的影响,兼容性更强:
<xsl:if test="not(following-sibling::Lion)"> <div>All mamals are printed</div> </xsl:if>
内容的提问来源于stack exchange,提问作者vishnu
相关产品推荐
相关产品推荐

