我正在使用从XML到HTML的XSLT转换创建一个已排序标题的项目符号列表。
现在我正在以未分类的方式打印出每个标题:
<xsl:template match="/">
<html>
<head>
</head>
<body>
<p>This file contains correspondence: </p>
<ul>
<xsl:for-each select="ead/archdesc/dsc/c01">
<xsl:for-each select="c02">
<li><xsl:value-of select="did/unittitle"/></li>
</xsl:for-each>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
每个c02元素都包含在c01元素中,其中有许多元素。因此,如果我将xsl:sort元素放在第二个foreach循环中,对单元标题进行排序,则每个c02元素将被单独排序,而不是完整列表。
将排序元素放在第二个for-each循环中时的输出会重置每个c01元素后的排序。
<li>Kuiper</li>
<li>Oort</li>
<li>Oosterhoff</li>
<li>Schlesinger</li>
<li>Shapley</li>
<li>Sitter, A. de</li>
<li>Tisdale</li>
<li>Van Gent</li>
<li>Bosscha Observatory</li> //Sorting resets
我的问题是,当我在这种情况下嵌套for-each循环时,我如何对整个元素列表进行排序。
编辑:XML源代码段
<dsc>
<c01 level="series" id="c01">
<did>
<unittitle label="Contents: ">Correspondence by correspondent (no
1-6)</unittitle>
<daogrp linktype="extended">
<daoloc label="reference"
href="http://digitalcollections.library.leiden.edu//.html"
linktype="locator"/>
</daogrp>
</did>
<c02 level="item" id="c01.1">
<did>
<unitid type="EAD">1</unitid>
<unittitle label="Contents: ">Van Gent</unittitle>
答案 0 :(得分:1)
您不需要在此处嵌套xsl:for-each
,只需使用一个....
<xsl:for-each select="ead/archdesc/dsc/c01/c02">
<xsl:sort select="did/unittitle" />
<li><xsl:value-of select="did/unittitle"/></li>
</xsl:for-each>