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