0

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

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

4

1 回答 1

0

我不确定 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最后一个元素。

于 2019-09-14T13:35:20.407 回答