0

テンプレートに次のようなループがあります。

    <xsl:variable name="seq">
        <xsl:sequence select="1"/>
        <xsl:sequence select="2"/>
        <xsl:sequence select="3"/>
        <xsl:sequence select="4"/>
        <xsl:sequence select="5"/>
    </xsl:variable>

    <xsl:for-each select="$seq">
        <xsl:text>(</xsl:text>
        <xsl:value-of select="."/>
        <xsl:text>)</xsl:text>
    </xsl:for-each>

$seq の各要素を 1 回繰り返し、 (1) (2) (3) (4) (5) を生成します。

代わりに、このコードは (1 2 3 4 5) を生成します。

適切なシーケンスを作成するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

0

次のように、命令が含まれ、属性がない変数:

<xsl:variable name="seq">
    <xsl:sequence select="1"/>
    <xsl:sequence select="2"/>
    <xsl:sequence select="3"/>
    <xsl:sequence select="4"/>
    <xsl:sequence select="5"/>
</xsl:variable>

ドキュメントノードを表します。この場合、文字列の内容が「1 2 345」である単一のテキストノードを含むドキュメントノードです。5つの整数のシーケンスが必要な場合は、select属性を使用するか、次のように記述します。

<xsl:variable name="seq" as="xs:integer*">
    <xsl:sequence select="1"/>
    <xsl:sequence select="2"/>
    <xsl:sequence select="3"/>
    <xsl:sequence select="4"/>
    <xsl:sequence select="5"/>
</xsl:variable>
于 2012-06-28T20:22:18.393 に答える
0

良い

<xsl:variable name="seq" select="1,2,3,4,5"/>

<xsl:value-of select="for $i in $seq return concat('(', $i, ')')" separator=" "/>

すべきです。または、何を達成したいですか?あなたのアプローチのために

<xsl:variable name="seq" as="item()*">
        <xsl:sequence select="1"/>
        <xsl:sequence select="2"/>
        <xsl:sequence select="3"/>
        <xsl:sequence select="4"/>
        <xsl:sequence select="5"/>
    </xsl:variable>

物事を改善するかもしれませんが、シーケンスだけが必要な場合はかなり複雑に見えます。

于 2012-06-28T18:00:40.467 に答える