代码之家  ›  专栏  ›  技术社区  ›  chiborg Alessandro Minoccheri

如何在XSLT中创建不是文档片段的变量?

  •  1
  • chiborg Alessandro Minoccheri  · 技术社区  · 14 年前

    考虑以下XSLT2.0模板

    <xsl:template match="/">
        <xsl:variable name="var1">
            <elem>1</elem>
            <elem>2</elem>
            <elem>3</elem>
        </xsl:variable>
        <xsl:text>var1 has </xsl:text>
        <xsl:value-of select="count($var1)"/>
        <xsl:text>elements.
        </xsl:text>
    
        <xsl:variable name="var2" select="$var1/elem[position() &gt; 1]"/>
        <xsl:text>var2 has </xsl:text>
        <xsl:value-of select="count($var2)"/>
        <xsl:text>elements.
        </xsl:text>
    </xsl:template>
    

    此模板的输出为

    var1 has 1 elements
    var2 has 2 elements
    

    var1 是包含 <elem>

    如何创建不包含文档片段的变量? 我可以像以前那样做 var2

    背景信息:我将在一个递归函数中使用变量内容,该函数检查 变量1 对于某些标准。如果满足条件或元素列表为空,则返回一个值。否则它将用 删除(就像我在 变量2 ). 使用时 作为包含文档片段的参数,模板中的XPath表达式将不匹配。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Dimitre Novatchev    14 年前

    如何创建一个

    用途:

    <xsl:variable name="var1" as="element()*"> 
        <elem>1</elem> 
        <elem>2</elem> 
        <elem>3</elem> 
    </xsl:variable> 
    

    筛选时在变量中插入片段 找出一些元素?

    如果您有:

    <xsl:variable name="var1"> 
        <elem>1</elem> 
        <elem>2</elem> 
        <elem>3</elem> 
    </xsl:variable> 
    

      <xsl:variable name="var2">
        <xsl:copy-of select="$var1/*[. mod 2 = 1]"/>
      </xsl:variable>