我使用以下 XSLT 块从 XML 文件中的“最新”项目中获取描述。它按日期排序(在我的 XML 中显示为<date>2011-11-15</date>
),然后从排序列表中选择顶部的日期。虽然我刚刚发现有些项目没有日期,但它们只是显示为<date/>
. 问题是我的 XSLT 将这些排序在排序列表的顶部,因此首先选择没有日期的项目。
那么,如何按日期对长度大于零的项目进行排序?
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="/products/product">
<xsl:sort select="normalize-space(substring(date,0,4))" order="ascending" />
<xsl:sort select="normalize-space(substring(date,4,2))" order="ascending" />
<xsl:sort select="normalize-space(substring(date,7,2))" order="ascending" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="product">
<xsl:if test="position()=1">
<xsl:value-of select="description"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>