将当前日期与节点的日期进行比较

时间:2013-03-14 08:21:05

标签: xslt

我对XSLT有一个小问题......

基本上我有以下xml:

<Root>
 <Node>
  <Prop1></Prop1>
  <Prop2></Prop2>
  <Date>03/05/2013</Date>
  ...
 </Node>
 <Node>
  <Prop1></Prop1>
  <Prop2></Prop2>
  <Date>01/01/2012</Date>
  ...
 </Node>
</Root>

从此我生成一个表,它看起来像这样:

<table>
<tr>       
    <th colspan="2" style="text-align:left;">
        <u>
        Table: 
        </u>    
    </th>
</tr> 
<xsl:for-each select="Root/Node[current-date() < date]">    
    <xsl:sort select="date" />          
            <tr>                
                <td><xsl:value-of select="prop1"/></td>
                <td>
                        ...       
                </td>
                <td><xsl:value-of select="date"/></td>
            </tr> 
</xsl:for-each>
</table>

我想只获得日期过期的节点,基本上是日期&lt;的currentdate

我知道如何实现它吗?

1 个答案:

答案 0 :(得分:1)

首先请记住,XPath是个案敏感的,如果Node的名称实际上是Node1Node2,则<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:param name="currentDate" /> <xsl:template match="/"> <table> <tr> <th colspan="2" style="text-align:left;"> <u> Table: </u> </th> </tr> <xsl:apply-templates select="Root/*[translate($currentDate, 'T:-', '') &lt; translate(Date, 'T:-', '')]"> <xsl:sort select="Date" /> </xsl:apply-templates> </table> </xsl:template> <xsl:template match="Root/*"> <tr> <td> <xsl:value-of select="Prop1"/> </td> <td> ... </td> <td> <xsl:value-of select="Date"/> </td> </tr> </xsl:template> </xsl:stylesheet> 将与该元素不匹配。

假设您正在使用XSLT 1.0,则没有内置方法来获取当前日期,因此您需要将其作为参数传递。如果你可以做到这一点,这样的事情应该可以解决问题:

{{1}}