2013-03-14 97 views
0

我有一個小問題用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> 

我想只得到的日期是過期的節點,基本上到目前爲止<的currentdate

任何想法我怎麼能實現它?

+0

你使用的是XSLT 1.0還是2.0? – JLRishe 2013-03-14 08:36:30

+0

我使用XSLT 1.0 :( – Alnedru 2013-03-14 09:19:48

+0

好的,那您的源數據的日期值必須在格式MM/DD/YYYY,或者他們是否被格式化爲YYYY-MM-DD?讓他們在前格式會讓他們很難與和排序工作 – JLRishe 2013-03-14 09:36:54

回答

1

請首先記住XPath是否區分大小寫,如果Node的名稱實際上是Node1Node2,則該元素不匹配元素。

假設您正在使用XSLT 1.0工作,沒有內置的方式來獲得當前的日期,所以你需要在把它作爲一個參數。如果你能做到這一點,那麼應該這樣做:

<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> 
+0

對不起,請你回到前面的例子,因爲它是XSTL 1.0,我設法傳遞參數,並在此日期參數的值,這樣的例子:2013 -03-14T10:47:50Z – Alnedru 2013-03-14 09:50:11

+0

我已經回覆了我的答案,但爲了達到這個目的,輸入XML中的日期也必須是'yyyy-MM-dd ...'格式。 – JLRishe 2013-03-14 12:24:04

相關問題