【问题标题】:xsl:sort does not work together with xsl:choose or ifxsl:sort 不能与 xsl:choose 或 if 一起使用
【发布时间】:2013-05-17 17:27:32
【问题描述】:

我遇到的这个 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>

【问题讨论】:

    标签: xml sorting xslt if-statement xsl-choose


    【解决方案1】:

    抱歉,有坏消息。这行不通。唯一可能的解决方案(我目前看到的)是将整个 xsl:for-each 放入 xsl:when(有或没有排序)。

    您的代码示例应如下所示:

    <xsl:variable name="newspaper_group" select="./newspaper[count(. | key('newspaper_key', ./@id)[1]) = 1]" />
    <xsl:choose>
        <xsl:when  test="$sort_newspaper = 'name'">
            <xsl:for-each select="$newspaper_group" >
                <xsl:sort select="./@name"/>
                <!-- Sorted stuff -->
            </xsl:for-each>
        </xsl:when>
        <xsl:otherwise>
            <xsl:for-each select="$newspaper_group" >
                <!-- Unsorted stuff -->
            </xsl:for-each>
        </xsl:otherwise>
    </xsl:choose>
    

    【讨论】:

      【解决方案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,排序键都是一样的,所以排序没有效果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-27
        • 1970-01-01
        • 1970-01-01
        • 2020-05-06
        • 2019-03-16
        • 1970-01-01
        相关资源
        最近更新 更多