2013-05-21 162 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