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



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

<alpha>
... 
</alpha>

怎么可能做到呢?

XSLT1.0的数据模型中没有数据结构来表示字符串序列;它唯一支持的"集合"结构是一个节点集。如果您完全绑定到XSLT1.0,那么您将不得不将字符串包装为XML元素,并传入包含这些元素的文档。

但是您使用的是Java,因此您可以通过安装Saxon来访问XSLT2.0和XSLT3.0,因此尝试接受这些限制是没有意义的。XSLT2.0极大地扩展了所支持的数据类型集(将"字符串序列"作为多种可能性之一(,XSLT3.0进一步扩展了它,将其包括映射。Saxon从Java数据类型到XSLT/XPath数据类型的映射包括将JavaList<String>转换为XPathxs:string*的可能性。

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

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

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

http://www.saxonica.com/documentation/index.html#!可扩展性/功能/功能结果

在XSLT中,您可以将这些字符串包装为元素(我在这里使用了XSLT3.0语法(:

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

【免责声明:我是Saxon的主要开发者】

相关内容

  • 没有找到相关文章

最新更新