次の XSLT ブロックを使用して、XML ファイルの「最新」項目から説明を取得します。日付で並べ替え (私の XML では のように表示されます<date>2011-11-15</date>
)、並べ替えられたリストから一番上のものを選びます。一部のアイテムには日付がなく、単に のように表示されていることを発見しましたが<date/>
。問題は、私の XSLT がこれらをソート済みリストの一番上にソートし、日付のない項目を最初に選択することです。
では、長さが 0 より大きい項目を日付で並べ替えるにはどうすればよいでしょうか。
<?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>