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