2

私はこの XSL の問題に夢中になっています!

問題は、フォームで選択された後に新聞を並べ替えたいということです。$sort_newspaper = 'name'名前の後にソートする必要がある場合( )... しかし... が選択または後に存在する<xsl:sort select="./@name"/>場合は機能しません。xsl:sortまた、 では機能しませんxsl:if

明確にするために、コードが現在のように機能し、選択が機能します...

    <xsl:for-each select="./newspaper[count(. | key('newspaper_key', ./@id)[1]) = 1]">
            <xsl:sort select="./@name"/> 

            <xsl:choose>
                <xsl:when  test="$sort_newspaper = 'name'">
                    XSL:SORT SHOULD BE HERE BUT THAT WILL RESULT IN ERROR!
                </xsl:when>
                <xsl:otherwise>
                    HALLO
                </xsl:otherwise>
            </xsl:choose>
IF XSL:SORT WOULD BE HERE IT WOULD RESULT IN ERROR TOO!
    </xsl:for-each>
4

2 に答える 2

2

これが代替ソリューションです

<xsl:variable name="newspaper_group" select="..." />

<xsl:for-each select="$newspaper_group" >
    <xsl:sort select="./@name[$sort_newspaper = 'name']"/>
            <!-- Sorted stuff -->
</xsl:for-each>

これが機能する方法は、$sort_newspaper = 'name'が false の場合、並べ替えキーがすべて同じであるため、並べ替えは効果がありません。

于 2013-05-22T20:35:43.963 に答える