打印地图中包含的所有值

Printing all values contained in a map

我有一个这样定义的地图:

<xsl:variable name="mapping" select="myns:loadMap()"  as="map(xs:string, xs:string)"/>

我想在我的转换中打印该地图中包含的所有值。 如何遍历地图的内容?

像这样(这不起作用):

<xsl:for-each select="$mapping/map:entry">
    <!-- Print here -->
</xsl:for-each>

如果那真的是 XPath 3.1 映射,我会尝试 <xsl:value-of select="$mapping?*"/>。您对 /map:entry 的尝试表明您希望处理具有子元素的节点。

根据您的评论,您可能需要例如<xsl:value-of select="map:for-each($mapping, function($k, $v) { $k || ':' || $v })"/>.

在 XSLT 4 (https://qt4cg.org/branch/master/xslt-40/Overview-diff.html#for-each) 中,您可以使用 <xsl:for-each map="$mapping"><xsl:value-of select="?key, ?value" separator=" : "/></xsl:for-each>.

Saxon 11(PE 和 EE)作为 preview/extension 提供:https://www.saxonica.com/html/documentation11/v4extensions/xslt-syntax-extensions/iteration-maps-arrays.html