0

我不太喜欢 xslt,所以我遵循一些众所周知的模式来模拟 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

它似乎总是检索第一个节点。

我知道我可以先排序,然后得到第一个(或最后一个)位置元素,但我更感兴趣的是知道我做错了什么。

4

1 回答 1

0

XSLT 1.0 不提供对字符串的大于或小于比较:它将两个字符串都转换为数字(给出 NaN)并且将 NaN 与 NaN 进行比较总是给出 false。

在 XSLT 1.0 中比较字符串大小的唯一方法是 xsl:sort - 对元素进行排序并选择第一个/最后一个。

或者迁移到 XSLT 2.0。

于 2013-05-22T07:18:19.647 回答