1
<?xml version="1.0" encoding="UTF-8"?>
<accountList>
<previousAccount>
<account>
<lastName>NASH</lastName>
<accountStatus>REMOVED</accountStatus>
<accNo>8D</accNo>
</account>
<account>
<lastName>ADOGA</lastName>
<accountStatus>REMOVED</accountStatus>
<accNo>8A</accNo>
</account>
<account>
<lastName>LUCAS</lastName>
<accountStatus>HOLD</accountStatus>
<accNo>9A</accNo>
</account>
<account>
<lastName>DONALD</lastName>
<accountStatus>HOLD</accountStatus>
<accNo>10D</accNo>
</account>
<account>
<accountStatus>HOLD</accountStatus>
<lastName>LONDON</lastName>
<accNo>10B</accNo>
</account>
</previousAccount>
<account>
<Title>Mr</Title>
<firstName>RICHARD</firstName>
<lastName>JOHN</lastName>
<city>london</city>
<accNo>5A</accNo>
</account>
<account>
<Title>Mr</Title>
<firstName>xxx</firstName>
<lastName>JOHN</lastName>
<city>London</city>
<accNo>5D</accNo>
</account>
<account>
<Title>Mr</Title>
<firstName>HEWIT</firstName>
<lastName>JOHN</lastName>
<city>LONDON</city>
<accNo>20B</accNo>
</account>
<account>
<Title>Mr</Title>
<firstName>xxx</firstName>
<lastName>JOHN</lastName>
<city>LONDON</city>
<accNo>21D</accNo>
</account>
<account>
<Title>Mr</Title>
<firstName>KEVIN</firstName>
<lastName>PETE</lastName>
<city>LONDON</city>
<accNo>5F</accNo>
</account>
</accountList>
XSLT代码由字母数字格式从多个节点进行排序
<xsl:stylesheet version="2.0"
xsi:schemaLocation="http://www.w3.org/1999/XSL/Transform file:/C:/Users/n434947/Desktop/workspace/SonicXSLT/BA xslt page.xsd"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="text"/>
<xsl:variable name="newline">
<xsl:text>
</xsl:text>
</xsl:variable>
<xsl:template match="accountList">
<xsl:for-each-group select="descendant::account" group-starting-with="*[firstName != 'xxx' or lastName != preceding-sibling::*[1]/lastName]">
<xsl:sort select="accNo" data-type="number"/>
<xsl:value-of select="accNo"/>
<xsl:text> </xsl:text>
<xsl:value-of select="accountStatus"/>
<xsl:text> </xsl:text>
<xsl:value-of select="lastName"/>
<xsl:value-of select="$newline"/>
</xsl:for-each-group>
</xsl:template>
在我的要求,我得到了排序ACCNO它们是不同的nodes.I想我会做的更好的代码解释这不是也就是说, 为accountList/previousAccount /帐号/ ACCNO 为accountList /帐号/ ACCNO
我用的后裔,这是不工作的罚款,我requirement.Here我用了两个换分别用于两个节点和分类separtedly.Last但至少我去t按字母数字组合排序。
实际输出
8D REMOVED NASH
8A REMOVED ADOGA
9A HOLD LUCAS
10D HOLD DONALD
10B HOLD LONDON
5A JOHN
20B JOHN
5F PETE
期待输出
5A JOHN
5F PETE
8A REMOVED ADOGA
8D REMOVED NASH
9A HOLD LUCAS
10B HOLD LONDON
10D HOLD DONALD
20B JOHNaccNo will be in sorted manner.
的主要问题是由像图2A的字母数字的组合时无法排序,2B,3B,3G