3

固定の数列を宣言する必要があります。どうすればいいですか?

たとえば、それは(私はここで推測しています):

<xsl:element name="xsl:param">
    <xsl:attribute name="name">MySequence</xsl:attribute>
    <xsl:sequence>(1,2,3,4)</xsl:sequence>
</xsl:element>

また

<xsl:element name="xsl:param">
    <xsl:attribute name="name">MySequence</xsl:attribute>
    <xsl:sequence>1,2,3,4</xsl:sequence>
</xsl:element>

または何?

ありがとう

4

2 に答える 2

5

XSLT 2.0 を使用している場合は、次のselectように直接シーケンスを作成できます。

<xsl:param name="MySequence" select="('1','2','3','4')"/>

XSLT ベースの検証...

XSLT 2.0

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:strip-space elements="*"/>

    <xsl:param name="seq" select="('23453','74365','98','653')"/>

    <xsl:template match="/">
        <xsl:for-each select="$seq">
            <xsl:value-of select="concat('Item ',position(),': ',.,'&#xA;')"/>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

任意の XML 入力に適用すると、次が生成されます。

Item 1: 23453
Item 2: 74365
Item 3: 98
Item 4: 653
于 2013-02-14T09:15:22.517 に答える
1

XSLT 2.0 の意味でシーケンスを構築するには、selectegを使用します。

<xsl:sequence select="1 to 4" />

ただし、要素に値を追加する場合は、value-of

<xsl:value-of select="1 to 4" separator="," />

質問のスニペットを考えると、これは次の出力 XML を生成します。

<xsl:param name="MySequence">1,2,3,4</xsl:param>

これにより、生成されたパラメーターの値がコンマ区切りの文字列になります。生成された XSLT で実際に値をシーケンスにしたい場合は、要素のコンテンツを使用する代わりに属性paramを生成する必要があります。select

<xsl:element name="xsl:param">
  <xsl:attribute name="name" select="'MySequence'"/>
  <xsl:attribute name="select">
    <xsl:text>(</xsl:text>
    <xsl:value-of select="1 to 4" separator=","/>
    <xsl:text>)</xsl:text>
  </xsl:attribute>
</xsl:element>

の出力を与える

<xsl:param name="MySequence" select="(1,2,3,4)" />
于 2013-02-14T09:19:46.363 に答える