如何在XSLT中迭代列表(例如ArrayList)

问题描述 投票:0回答:1

我有一个名为myList的字符串列表,我想使用迭代在标签中设置XSLT中的所有值:-

<alpha>
... 
</alpha>

怎么可能呢?

java xslt xslt-1.0
1个回答
1
投票
XSLT 1.0在其数据模型中没有数据结构来表示字符串序列;它支持的唯一“集合”结构是节点集。如果您完全依赖XSLT 1.0,则必须将字符串包装为XML元素,并传递包含这些元素的文档。

但是您正在使用Java,因此您可以通过安装Saxon来访问XSLT 2.0和XSLT 3.0,因此尝试并遵守这些限制是没有意义的。 XSLT 2.0大大扩展了所支持的数据类型集(将“字符串序列”作为许多可能性之一),而XSLT 3.0对其进行了扩展,进一步包括了映射。 Saxon从Java数据类型到XSLT / XPath数据类型的映射包括将Java List<String>转换为XPath xs:string*的可能性。

使用Saxon,您可以将参数声明为期望的字符串列表:

<xsl:param name="in" as="xs:string*"/>

然后您可以提供List<String>作为实际值,按如下所述进行转换:

http://www.saxonica.com/documentation/index.html#!extensibility/functions/function-result

然后在XSLT中,您可以将这些字符串包装为元素(我在这里使用XSLT 3.0语法):

<xsl:for-each select="$in"> <alpha>{.}</alpha> </xsl:for-each>

[免责声明:我是Saxon的首席开发人员]
© www.soinside.com 2019 - 2024. All rights reserved.