我如何使用 XSLT 3.0 map:remove?
How do I use XSLT 3.0 map:remove?
我试图从 XSLT 3 映射中删除一个项目,但我将 运行 保留为如何处理 map:remove 函数的输出。在这一点上,我正在使用一个一次性变量来确保我没有 return 输出任何内容。
<xsl:if test="map:size($aMap) > 0">
<xsl:variable name="throwaway" select="map:remove($aMap, map:keys($aMap)[1])"/>
</xsl:if>
有更简单的方法吗?
映射是不可变的,因此虽然您可以调用 map:remove($aMap, map:keys($aMap)[1])
而不存储该调用的结果,但它不会更改变量 aMap
绑定到的映射,您需要存储结果remove
调用,在一个新的变量中,或者重新绑定现有的变量;所以
<xsl:variable name="aMap" select="map { 'a' : 1, 'b' : 2, 'c' : 3 }"/>
<xsl:message select="map:remove($aMap, 'b')"/>
<size>{map:size($aMap)}</size>
<xsl:variable name="aMap" select="map:remove($aMap, 'b')"/>
<size>{map:size($aMap)}</size>
给予
<size>3</size>
<size>2</size>
我试图从 XSLT 3 映射中删除一个项目,但我将 运行 保留为如何处理 map:remove 函数的输出。在这一点上,我正在使用一个一次性变量来确保我没有 return 输出任何内容。
<xsl:if test="map:size($aMap) > 0">
<xsl:variable name="throwaway" select="map:remove($aMap, map:keys($aMap)[1])"/>
</xsl:if>
有更简单的方法吗?
映射是不可变的,因此虽然您可以调用 map:remove($aMap, map:keys($aMap)[1])
而不存储该调用的结果,但它不会更改变量 aMap
绑定到的映射,您需要存储结果remove
调用,在一个新的变量中,或者重新绑定现有的变量;所以
<xsl:variable name="aMap" select="map { 'a' : 1, 'b' : 2, 'c' : 3 }"/>
<xsl:message select="map:remove($aMap, 'b')"/>
<size>{map:size($aMap)}</size>
<xsl:variable name="aMap" select="map:remove($aMap, 'b')"/>
<size>{map:size($aMap)}</size>
给予
<size>3</size>
<size>2</size>