Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 按其他两个元素(姓、名)分组时,对元素内容(serno)进行排序_Xslt - Fatal编程技术网

Xslt 按其他两个元素(姓、名)分组时,对元素内容(serno)进行排序

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: 所需输

请建议如何“在按其他两个元素(姓氏、名字)分组时,按升序对元素内容(serno)进行排序”。分组正在正确进行,但无法对“serno”元素内容的数字值进行排序。(XSLT2)

XML:

]>
该索引是第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&racute;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>&Racute;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="&#x00154;" string="&amp;Racute;"/>
    <xsl:output-character character="&#x00155;" string="&amp;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&amp;ignore-modifiers=yes"/>
        <xsl:sort select="firstname" collation="http://saxon.sf.net/collation?lang=en&amp;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&racute;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>&Racute;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="&#x00154;" string="&amp;Racute;"/>
    <xsl:output-character character="&#x00155;" string="&amp;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&amp;ignore-modifiers=yes"/>
        <xsl:sort select="firstname" collation="http://saxon.sf.net/collation?lang=en&amp;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>