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

时间:2018-07-03 13:50:11

标签: xml xslt oxygenxml

我想从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 个答案:

答案 0 :(得分:1)

我通过扩展所有//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>