2013-05-21 130 views
0

XSLT最大仿真功能,我沒有太多成XSLT,所以我下面的模擬max函數用於XSLT 1.0一些知名的格局。這是爲什麼不工作

編輯: 我知道線程對象可以是混亂的,我不是想建立一個功能,而是模擬相同的行爲

也就是說,我有以下XML:

<cards> 
<card><updated>2013-05-19T16:18:59Z</updated></card> 
<card><updated>2013-05-19T20:41:59Z</updated></card> 
<card><updated>2013-05-19T18:30:59Z</updated></card> 
</cards> 

我想有以下輸出:

max-updated:2013-05-19T20:41:59Z 

這是XSLT,但它只是沒有按預期工作:

<xsl:template match="cards"> 
    max-updated:<xsl:value-of select="card[not(../card[updated] &gt; updated)]/updated"/> 
</xsl:template> 

但輸出是:

max-updated:2013-05-19T16:18:59Z 

,它似乎始終檢索第一個節點。

我知道,我能先排序順序,然後獲得第一(或最後)位置的元素,但我是知道什麼是我做錯了更多的興趣。

回答

0

XSLT 1.0不提供大於或低於上字符串的比較:它轉換兩個字符串到數字(給NAN)和比較NaN的爲NaN總是提供虛假。

來比較大小字符串XSLT 1.0的唯一途徑是XSL:排序 - 元素進行排序,然後選擇第一個/最後。

或轉移到XSLT 2.0。

+0

謝謝,這是一個很好的解釋。 – Leonardo