代码之家  ›  专栏  ›  技术社区  ›  Ole

从多个元素排序的列表

  •  1
  • Ole  · 技术社区  · 7 年前

    我想从XML文件创建按字母顺序排列的列表。在XML文件中,我有很多 <index-elements> 这应该是列表的一部分,我只需按 //index-elements . 我还想添加另一种元素,称为 <name> ,以正确的位置(按字母顺序排序)显示在同一列表中。通常我用 <xsl:for-each-group group-by="..." select="..."> 循环与 <xsl:sort lang="lang-code"> 函数,但我不能为多个节点集选择。这是我第一次需要在一个排序结果中添加两个不同的元素。目前我不知道如何解决这个问题。

    XML

    <section>
        <child>
            <index-elements>Gamma</index-elements>
        </child>
        <child>
            <index-elements>Zeta</index-elements>
        </child>
    </section>
    
    <section>
        <child>
            <index-elements>Alpha</index-elements>
        </child>
        <child>
            <new-element>
                <index-elements>Delta</index-elements>
            </new-element>            
        </child>
    </section>    
    
    <section>
        <some-element>
            <name>Epsilon</name>
        </some-element>
        <some-element>
            <name>Beta</name>
        </some-element>
    </section>  
    

    预期产量

    Alpha Beta Gamma Delta Epsilon Zeta

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ole    7 年前

    //index-elements //name.

    <xsl:for-each select="//index-elements, //name"> <xsl:sort lang="{$langCode}"/> <xsl:value-of select="current()/text()"/> </xsl:for-each>