Xslt 按其他两个元素(姓、名)分组时,对元素内容(serno)进行排序
请建议如何“在按其他两个元素(姓氏、名字)分组时,按升序对元素内容(serno)进行排序”。分组正在正确进行,但无法对“serno”元素内容的数字值进行排序。(XSLT2) XML:Xslt 按其他两个元素(姓、名)分组时,对元素内容(serno)进行排序,xslt,Xslt,请建议如何“在按其他两个元素(姓氏、名字)分组时,按升序对元素内容(serno)进行排序”。分组正在正确进行,但无法对“serno”元素内容的数字值进行排序。(XSLT2) XML: ]> 该索引是第65卷的累积索引 v65n 鲁德拉特 1424 鲁德拉特 4. 鲁德拉普 14 RudramuniCP 14 拉穆尼亚普 24 鲁德和拉库特;阿穆尼亚普 24 拉穆尼亚普 224 RudramuniTP 10 拉穆尼亚普 9 粗鲁的 11 &拉库特;UDRAMUNTP 19 XSLT: 所需输
]>
该索引是第65卷的累积索引
v65n
鲁德拉特
1424
鲁德拉特
4.
鲁德拉普
14
RudramuniCP
14
拉穆尼亚普
24
鲁德和拉库特;阿穆尼亚普
24
拉穆尼亚普
224
RudramuniTP
10
拉穆尼亚普
9
粗鲁的
11
&拉库特;UDRAMUNTP
19
XSLT:
所需输出:
<?xml version="1.0" encoding="UTF-8"?><cmindexnote>This index is cumulative for volume 65</cmindexnote><issue>v65n</issue>
<author><lastname>Rudra</lastname><firstname>AP</firstname>
<refserial><serno>14</serno></refserial></author>
<author><lastname>Rudra</lastname><firstname>TP</firstname>
<refserial><serno>4</serno><serno>14</serno><serno>24</serno></refserial></author>
<author><lastname>Rudramuni</lastname><firstname>AP</firstname>
<refserial><serno>9</serno><serno>24</serno><serno>224</serno></refserial></author>
<author><lastname>Rudŕamuni</lastname><firstname>AP</firstname>
<refserial><serno>24</serno></refserial></author>
<author><lastname>Rudramuni</lastname><firstname>CP</firstname>
<refserial><serno>14</serno></refserial></author>
<author><lastname>Rudramuni</lastname><firstname>TP</firstname>
<refserial><serno>10</serno></refserial></author>
<author><lastname>Ŕudramuni</lastname><firstname>TP</firstname>
<refserial><serno>19</serno></refserial></author>
<author><lastname>Rudresh</lastname><firstname>TP</firstname>
<refserial><serno>11</serno></refserial></author>
此索引是卷65v65n的累积索引
鲁德拉普
14
鲁德拉特
41424
拉穆尼亚普
924224
鲁德和拉库特;阿穆尼亚普
24
RudramuniCP
14
RudramuniTP
10
&拉库特;UDRAMUNTP
19
粗鲁的
11
这对你有用吗
XSLT2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" use-character-maps="chars"/>
<xsl:character-map name="chars">
<xsl:output-character character="Ŕ" string="&Racute;"/>
<xsl:output-character character="ŕ" string="&racute;"/>
</xsl:character-map>
<xsl:template match="/index">
<xsl:copy-of select="cmindexnote | issue"/>
<xsl:for-each-group select="author" group-by="concat(lastname, firstname)">
<xsl:sort select="lastname" collation="http://saxon.sf.net/collation?lang=en&ignore-modifiers=yes"/>
<xsl:sort select="firstname" collation="http://saxon.sf.net/collation?lang=en&ignore-modifiers=yes"/>
<author>
<xsl:copy-of select="lastname | firstname"/>
<refserial>
<xsl:for-each select="current-group()/refserial/serno">
<xsl:sort select="." data-type="number" order="ascending"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</refserial>
</author>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
Perfect先生,非常感谢您的完美建议+1。一个小小的澄清,现在实体显示为UTF字符。请建议将其作为ISO实体(&Racute;)获取。@RudramuniTP很抱歉,我忘记在
元素中包含use character maps=“chars”
。谢谢您的建议。
<?xml version="1.0" encoding="UTF-8"?><cmindexnote>This index is cumulative for volume 65</cmindexnote><issue>v65n</issue>
<author><lastname>Rudra</lastname><firstname>AP</firstname>
<refserial><serno>14</serno></refserial></author>
<author><lastname>Rudra</lastname><firstname>TP</firstname>
<refserial><serno>4</serno><serno>14</serno><serno>24</serno></refserial></author>
<author><lastname>Rudramuni</lastname><firstname>AP</firstname>
<refserial><serno>9</serno><serno>24</serno><serno>224</serno></refserial></author>
<author><lastname>Rudŕamuni</lastname><firstname>AP</firstname>
<refserial><serno>24</serno></refserial></author>
<author><lastname>Rudramuni</lastname><firstname>CP</firstname>
<refserial><serno>14</serno></refserial></author>
<author><lastname>Rudramuni</lastname><firstname>TP</firstname>
<refserial><serno>10</serno></refserial></author>
<author><lastname>Ŕudramuni</lastname><firstname>TP</firstname>
<refserial><serno>19</serno></refserial></author>
<author><lastname>Rudresh</lastname><firstname>TP</firstname>
<refserial><serno>11</serno></refserial></author>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" use-character-maps="chars"/>
<xsl:character-map name="chars">
<xsl:output-character character="Ŕ" string="&Racute;"/>
<xsl:output-character character="ŕ" string="&racute;"/>
</xsl:character-map>
<xsl:template match="/index">
<xsl:copy-of select="cmindexnote | issue"/>
<xsl:for-each-group select="author" group-by="concat(lastname, firstname)">
<xsl:sort select="lastname" collation="http://saxon.sf.net/collation?lang=en&ignore-modifiers=yes"/>
<xsl:sort select="firstname" collation="http://saxon.sf.net/collation?lang=en&ignore-modifiers=yes"/>
<author>
<xsl:copy-of select="lastname | firstname"/>
<refserial>
<xsl:for-each select="current-group()/refserial/serno">
<xsl:sort select="." data-type="number" order="ascending"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</refserial>
</author>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>