Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在XSLT中排序,仅当字符串长度!=0_Xml_Xslt_Sorting - Fatal编程技术网

Xml 在XSLT中排序,仅当字符串长度!=0

Xml 在XSLT中排序,仅当字符串长度!=0,xml,xslt,sorting,Xml,Xslt,Sorting,我使用下面的XSLT块从XML文件中获取“最新”项的描述。它按日期排序(在我的XML中显示为2011-11-15),然后从排序列表中选择最上面的一个。虽然我刚刚发现有些项目没有日期,它们只是显示为。问题是XSLT在排序列表的顶部对这些项进行排序,从而首先选择没有日期的项 那么,如何按日期对长度大于零的项目进行排序 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl

我使用下面的XSLT块从XML文件中获取“最新”项的描述。它按日期排序(在我的XML中显示为
2011-11-15
),然后从排序列表中选择最上面的一个。虽然我刚刚发现有些项目没有日期,它们只是显示为
。问题是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>

只需避免在排序中包含那些没有日期的:

<xsl:apply-templates select="/products/product[date]">


顺便说一句,(a)您似乎选择了列表中最早的项目,而不是最新的项目,(b)确实没有必要将日期分成三部分进行格式设置:如果所有日期都是YYYY-MM-DD格式,则应按字母顺序进行排序,除非系统决定使用奇数排序顺序,在这种情况下,
可能更安全。

我只想把它们排除在外。它是由Magento生成的XML,因此我无法手动删除该条目。它就在那里,所以“从我的代码中”得到它的唯一方法就是忽略这些条目。实际上日期显示为
2012-01-23 00:00:00
,所以我无法让你的代码工作。@Jeffreyroosendal,请编辑这个问题并提供一个源XML文档(小)实例——人们不必猜测数据是什么。