0

データ型のドロップダウン リストと同じ順序で XSLT のリストを並べ替えるにはどうすればよいですか?

私は成功せずに次のことを試しました:

<xsl:variable name="tarrifs" select="umbraco.library:GetPreValues(1601)//preValue" />
<xsl:sort select="tarrifs" order="descending" />

データ型「Tariff Category」にオプションのリストがあり、データ型と同じ順序で XSLT のリストを並べ替えたいと考えています。

私のデータ型の順序:

  • UE料金基準

  • UE 価格提案

  • UE料金表

  • UEその他料金

  • UEタリフ戦略レポート

  • MG料金表

  • MGタリフレポート

  • MG付属物およびその他の料金

4

2 に答える 2

0

あなたはこのようなものを探しています:-

あなたのxmlがこのようであると仮定します:-

XML:

<preValues>
    <preValue id="19">Value 1</preValue>
    <preValue id="20">Value 2</preValue>
    <preValue id="21">Value 3</preValue>
</preValues>

XSLT:

id順番に並べ替えたい場合descendingは、このようにします

<xsl:for-each select="umbraco.library:GetPreValues(1601)//preValue">
    <xsl:sort select="@id" order="descending" />
    <!-- Do Your Stuff --> 
</xsl:for-each>

同じ方法に従って、複数の属性値で並べ替えます。

于 2012-06-26T08:46:29.890 に答える
0

まず、またはタグ<xsl:sort...内に表示する必要があります。<xsl:apply-templates...<xsl:for-each...

必要に応じて主観的な論理で並べ替えるには、いくつかの方法があります。最も簡単なのはおそらくこれです:

XML

<root>
    <item>dog</item>
    <item>cat</item>
    <item>horse</item>
    <item>dragonfly</item>
</root>

XSL

<!-- this sheet vars -->
<xsl:variable name='sort_order' select='"dragonfly|horse|dog|cat"' />

<!-- root and static content -->
<xsl:template match="/">
    <xsl:apply-templates select='root/item'>
        <xsl:sort select='string-length(substring-before($sort_order, current()/text()))' data-type='number' />
    </xsl:apply-templates>
</xsl:template>

<!-- iteration content - animal -->
<xsl:template match='item'>
    <p><xsl:value-of select='.' /></p>
</xsl:template>

この XMLPlayground セッションでテストできます。

おそらくご覧のとおり、目的のソート順を文字列として宣言し、そのソート文字列内の各ノードのテキスト値の位置に基づいてノードを繰り返しソートするという概念です。

于 2012-06-26T08:43:24.970 に答える