在 Responys EMD 版本中查找最后一个节点位置的逻辑



<xsl:choose> <xsl:when test="position() != last()"> </xsl:when> </xsl:choose>

我正在尝试在 EMD Rpl 函数中使用 last(( 函数,但这不起作用

我不确定 Responys EMD 如何配置 FreeMarker。我也看到Oracle有时会使用他们自己的FreeMarker分支,这可能是基于一些非常旧的版本。但我会假设它像往常/最新的 FreeMarker 一样工作,但也许它没有。

someElement['position()']调用 XPath 函数时,出于某种原因,它总是返回 -1。但是如果你用#list列出元素,你可以使用?is_last,就像这样(使用数据模型的 https://try.freemarker.apache.org 语法(。

数据模型:

doc=<root>
<a>text 1</a>
<a>text 2</a>
</root>

模板:

<#list doc.root.a as a>
${a}
<#if a?is_last>
That was the last one.
</#if>
</#list>

其中打印:

text 1
text 2
That was the last one.

(还有其他花哨的功能,可以根据与#list相关的项目的位置来做事,比如#sep,但请参阅 FreeMarker 文档。

#list之外,如果你只有来自某个地方的元素,myElement@@next_sibling_element[0]??将返回最后一个元素的false