首页 > 解决方案 > XSLT + XML - 过滤结果

问题描述

第一次做这样的事情,我知道它的基本原理,但是我有一个包含各种新闻故事的 XML 文件,每个新闻都有一个 ID,随着故事的添加而增加。

我正在尝试根据降序的 ID 输出最近的三个故事。

这个 XSLT 有什么问题?

提前致谢

<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<body>
         <xsl:for-each select="items/item">
            <xsl:sort select="id" data-type="number" order="descending" />
            <xsl:variable name="image"><xsl:value-of select="image"/></xsl:variable>
            <xsl:variable name="pagelink"><xsl:value-of select="link"/></xsl:variable>
            <xsl:variable name="blogtitle"><xsl:value-of select="title"/></xsl:variable>            
            <div class="col-md-4 mb-4 mb-md-0 float-left" >                                 
                <div class="card border-0 box-shadow-4">
                    <div class="card-img-top position-relative overlay">                        
                        <img src="control/blog/{$image}" class="img-fluid" alt="{$blogtitle}" />
                    </div>
                    <div class="card-body p-4">
                        <p class="font-weight-semibold text-2 text-color-hover-primary mb-0" ><xsl:value-of select="date"/></p>
                        <h4 class="font-weight-semibold text-5 text-color-primary mb-2"><xsl:value-of select="title"/></h4>
                        <div style="height:100px;">
                        <p class="text-3"><xsl:value-of select="intro"/></p>
                        </div>
                        <a href="/blog/{$pagelink}" class="btn btn-modern text-2 btn-primary border-0 mt-4">View</a>
                    </div>
                </div>              
            </div>                  
    </xsl:for-each>
         
</body>
</html> 

标签: xmlxslt

解决方案


如果需要xsl:sort,将 in 的其他内容包装xsl:for-each<xsl:if test="position() &lt; 4">...</xsl:if>只处理排序后的前三个元素。


推荐阅读