XSLT:来自多个元素的排序列表

XSLT: sorted list from multiple elements

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

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

我通过扩展所有 //index-elements//name. 的 for-each 序列解决了这个问题 我不知道对 select 参数使用两个 x 路径搜索结果。

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