1

次の XSLT 2.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

最初の行は 1 を出力します (私が最初に予想したように 3 ではありませんvar1) <elem>。今私の質問のために:

ドキュメントフラグメントを含まない変数を作成するにはどうすればよいですか? var2で行ったように、述語を除外するだけで実行できます。しかし、2 番目の変数を使用しない方法があるかもしれません。または、別の方法として、一部の要素を除外しながら、ドキュメントのフラグメントを変数に保存するにはどうすればよいですか?

var1背景情報: 最初の要素を特定の基準でチェックする再帰関数で変数の内容を使用します。基準が満たされるか、要素のリストが空の場合、値を返します。それ以外の場合は、削除されたの最初の要素で自分自身を呼び出しますvar1(私が で行うようにvar2)。var1ドキュメント フラグメントを含むパラメータとして使用すると、テンプレートの XPath 式が一致しません。

4

1 に答える 1

1

ドキュメントフラグメントを含まない変数を作成するにはどうすればよいですか?

使用する:

<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> 
于 2010-06-08T13:39:59.583 に答える