我试图按省份排序,然后按城镇排序。下面是一个示例XML:xsl:使用2个不同的节点对XML文件进行排序
<store>
<name>Duncan's</name>
<town>Waterloo</town>
<province>Ontario</province>
</store>
<store>
<name>Anne's</name>
<town>Waterloo</town>
<province>Ontario</province>
</store>
<store>
<name>Apple Variety</name>
<town>Woodstock</town>
<province>Ontario</province>
</store>
<store>
<name>Goose Market</name>
<town>Sackville</town>
<province>New Brunswick</province>
</store>
<store>
<name>Family Market</name>
<town>Sackville</town>
<province>New Brunswick</province>
</store>
我是能够成功地将数据通过镇使用此代码进行排序:
<xsl:key name="towns" match="store" use="town"/>
<xsl:for-each select="//store[generate-id(.)=generate-id(key('towns', town)[1])]">
<xsl:sort select="town"/>
<xsl:for-each select="key('towns', town)">
<xsl:sort select="name"/>
<xsl:if test="position() = 1">
<h2>
<xsl:value-of select="town"/>
</h2>
</xsl:if>
<b> <xsl:value-of select="name"/></b> <br/>
<br/> <br/>
</xsl:for-each>
</xsl:for-each>
我将如何使用一键在前排序省,列出所有门店中新不伦瑞克省(按字母顺序排列,然后按名称排序)然后是安大略省?还是有没有更好的方法来做到这一点,而不使用密钥?谢谢!
你说你是*排序*,但你也是*分组*。目前还不清楚你是否也想按省份进行分组,或只是按照省份进行分组。你可以在没有密钥的情况下进行排序,但是你需要它来进行分组。 –
是的,我想组和排序。因此,首先按省份排序,然后按城镇名称(在这些省份组内)进行分组和排序,然后按商店名称进行排序(在城镇组内) –