如何使用 XPATH 创建包含特定次数的固定值的序列?

How to create a sequence that contains a fixed value a specific number of times using XPATH?

我可以使用表达式

重复一个值,在本例中为 0,重复特定次数
for $i in 1 to $vMax return 0

假设 $vMax 是一个整数,那么如果 $vMax 是 3,则返回的序列将是 (0,0,0)

但是,有没有更简单的或其他一些常规的方法来做到这一点?

您可以使用 simple map operator:

(1 to $vMax) ! 0

您可以将原始的 for 循环或更短的版本包装在一个函数中,然后调用该函数:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:local="local">
    
    <xsl:function name="local:repeat">
      <xsl:param name="item"/>
      <xsl:param name="iterations" as="xs:integer"/>
        <!--<xsl:sequence select="for $i in (1 to $iterations) return $item"/>-->    
      <xsl:sequence select="(1 to $iterations) ! $item"/>          
    </xsl:function>
    
    <xsl:template match="/">
        <xsl:sequence select="local:repeat(0,3)"/>
    </xsl:template>
    
</xsl:stylesheet>

在 XPath 1.0 中,没有整数序列这样的数据类型,因此没有表达式可以产生这样的值。

在 XPath 2.0 中,它可以像 for $x in 1 to $n return 0.

那样完成

在 XPath 3.0/3.1 中,它可以像 (1 to $n)!0

最好标记 XPath 问题以表明您使用的是哪个版本。