sorting - 如何对区分大小写的文本进行排序 - XSLT
问题描述
我正在尝试对区分大小写的文本进行排序。如果我破坏了我的代码,那么一些输出是可以的,但在某些情况下,输出我的代码是不正确的。
输入 XML
<boxed-text content-type="casesBlock">
<p content-type="emCase" specific-use="02"><named-content content-type="emEntry">02 Micro Int’l, Ltd. v Monolithic Power Sys., Inc. (ND Cal 2006) 420 F Supp 2d 1070:</named-content></p>
<p content-type="emLetHead">A</p>
<p content-type="emCase"><named-content content-type="emEntry">AT&T Mobility LLC v Concepcion (2011) 563 US 333, 131 S Ct 1740:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">ATPAC, Inc. v Aptitude Solutions, Inc. (ED Cal, Apr. 29, 2010, No. CIV. 2:10–294 WBS KJM) 2010 US Dist Lexis 42109:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">ATS Prods., Inc. v Champion Fiberglass, Inc. (ND Cal, Jan. 15, 2015, No. 13–cv–02403–SI) 2015 US Dist Lexis 5106:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">ATS Prods., Inc. v Champion Fiberglass, Inc. (ND Cal, Nov. 19, 2013, No. C 13-02403 SI) 2013 US Dist Lexis 13886:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Abel v Southern Shuttle Servs., Inc. (11th Cir 2011) 631 F3d 1210:</named-content></p>
<p content-type="emLetHead">B</p>
<p content-type="emCase"><named-content content-type="emEntry">BTS, USA, Inc. v Executive Perspectives, LLC (Conn. Super, Oct. 16, 2014, No. X10CV116010685) 2014 Conn Super Lexis 2644, aff’d (Conn App 2016) 142 A3d 342:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">buySAFE, Inc. v Google, Inc. (Fed Cir 2014) 765 F3d 1350:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Babcock v Butler County (3d Cir 2015) 806 F3d 153:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Buxbom v Smith (1944) 23 C2d 535:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Byrd v Roadway Express, Inc. (5th Cir 1982) 687 F2d 85:</named-content></p>
<p content-type="emLetHead">E</p>
<p content-type="emCase"><named-content content-type="emEntry">E*Healthline.com, Inc. v Pharmaniaga Behard (ED Cal, Oct. 23, 2018, No. 2:18-cv-01069-MCE-FB) 2018 US Dist Lexis 182041:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">E-Smart Technols., Inc. v Drizin (ND Cal, Jan. 6, 2009, No. C 06–05528) 2009 US Dist Lexis 272:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">eOnline v Chicago Consulting Partners (ND Ill, Mar. 29, 2002, No. 01 C 1918) 2002 US Dist Lexis 5464:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Entertainment Research Group, Inc. v Genesis Creative Group, Inc. (9th Cir 1997) 122 F3d 1211:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Epic Communications, Inc. v Richwave Technol., Inc. (2009) 179 CA4th 314:</named-content></p>
<p content-type="emLetHead">H</p>
<p content-type="emCase"><named-content content-type="emEntry">H.Q. Milton, Inc. v Webster (ND Cal, Nov. 22, 2017, No. 17-cv-06598-PJH) 2017 US Dist Lexis 193646:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">hiQ Labs, Inc. v LinkedIn Corp. (ND Cal, Aug. 14, 2017, No 17-cv-03301-EMC) 2017 US Dist Lexis 129088:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">HP Debt Exch. LLC v Wells Fargo Bank, N.A. (ND Cal, Feb. 12, 2014, No. C–13–04717 EDL) 2014 US Dist Lexis 18076:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Hinojosa v WCAB (1972) 8 C3d 150:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Hirt v Equitable Retirement Plan for Employees, Managers & Agents (2d Cir 2008) 533 F3d 102:</named-content></p>
</boxed-text>
我已经编写了一些代码:我在代码下方使用了 for-each-group 和 group-adjacent。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="xml" omit-xml-declaration="no"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:output method="xml"/>
<xsl:template match="boxed-text[@content-type='casesBlock']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:for-each-group select="p" group-adjacent="not(matches(., '^([^a-z]{3,})'))">
<xsl:text>
</xsl:text>
<xsl:choose>
<xsl:when test="current-grouping-key()">
<xsl:apply-templates select="current-group()">
<xsl:sort select="lower-case(.)"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="current-group()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
预期输出:
<boxed-text content-type="casesBlock">
<p content-type="emCase" specific-use="02"><named-content content-type="emEntry">02 Micro Int’l, Ltd. v Monolithic Power Sys., Inc. (ND Cal 2006) 420 F Supp 2d 1070:</named-content></p>
<p content-type="emLetHead">A</p>
<p content-type="emCase"><named-content content-type="emEntry">AT&T Mobility LLC v Concepcion (2011) 563 US 333, 131 S Ct 1740:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">ATS Prods., Inc. v Champion Fiberglass, Inc. (ND Cal, Jan. 15, 2015, No. 13–cv–02403–SI) 2015 US Dist Lexis 5106:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">ATS Prods., Inc. v Champion Fiberglass, Inc. (ND Cal, Nov. 19, 2013, No. C 13-02403 SI) 2013 US Dist Lexis 13886:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">ATPAC, Inc. v Aptitude Solutions, Inc. (ED Cal, Apr. 29, 2010, No. CIV. 2:10–294 WBS KJM) 2010 US Dist Lexis 42109:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Abel v Southern Shuttle Servs., Inc. (11th Cir 2011) 631 F3d 1210:</named-content></p>
<p content-type="emLetHead">B</p>
<p content-type="emCase"><named-content content-type="emEntry">BTS, USA, Inc. v Executive Perspectives, LLC (Conn. Super, Oct. 16, 2014, No. X10CV116010685) 2014 Conn Super Lexis 2644, aff’d (Conn App 2016) 142 A3d 342:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Babcock v Butler County (3d Cir 2015) 806 F3d 153:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Buxbom v Smith (1944) 23 C2d 535:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">buySAFE, Inc. v Google, Inc. (Fed Cir 2014) 765 F3d 1350:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Byrd v Roadway Express, Inc. (5th Cir 1982) 687 F2d 85:</named-content></p>
<p content-type="emLetHead">E</p>
<p content-type="emCase"><named-content content-type="emEntry">E*Healthline.com, Inc. v Pharmaniaga Behard (ED Cal, Oct. 23, 2018, No. 2:18-cv-01069-MCE-FB) 2018 US Dist Lexis 182041:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">E-Smart Technols., Inc. v Drizin (ND Cal, Jan. 6, 2009, No. C 06–05528) 2009 US Dist Lexis 272:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Entertainment Research Group, Inc. v Genesis Creative Group, Inc. (9th Cir 1997) 122 F3d 1211:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">eOnline v Chicago Consulting Partners (ND Ill, Mar. 29, 2002, No. 01 C 1918) 2002 US Dist Lexis 5464:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Epic Communications, Inc. v Richwave Technol., Inc. (2009) 179 CA4th 314:</named-content></p>
<p content-type="emLetHead">H</p>
<p content-type="emCase"><named-content content-type="emEntry">H.Q. Milton, Inc. v Webster (ND Cal, Nov. 22, 2017, No. 17-cv-06598-PJH) 2017 US Dist Lexis 193646:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">HP Debt Exch. LLC v Wells Fargo Bank, N.A. (ND Cal, Feb. 12, 2014, No. C–13–04717 EDL) 2014 US Dist Lexis 18076:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Hinojosa v WCAB (1972) 8 C3d 150:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">hiQ Labs, Inc. v LinkedIn Corp. (ND Cal, Aug. 14, 2017, No 17-cv-03301-EMC) 2017 US Dist Lexis 129088:</named-content></p>
<p content-type="emCase"><named-content content-type="emEntry">Hirt v Equitable Retirement Plan for Employees, Managers & Agents (2d Cir 2008) 533 F3d 102:</named-content></p>
</boxed-text>
我的代码不能正常工作,任何人都可以帮助我。
解决方案
您仅在一组相邻条目中进行排序,并且您的分组标准使得“buySafe”将属于自己的一组。对包含单个项目的组进行排序显然没有效果。
我看不到您通过分组尝试实现的目标。
推荐阅读
- c++ - 通过引用或值捕获句柄到类模板ctor
- c++ - 委托工厂函数调用 - 找不到正确的语法
- unit-testing - 向 Clojure CLI 工具和 deps.edn 添加单元测试
- sql-server - kafka JDBC Sink Connector 是否跟踪加载到目标数据库的数据?
- sqlite - 使用 SQLite NOT %LIKE% 并返回所有行,即使值为 NULL
- docker-compose - 如何通过 Azure Pipelines 将多个 Docker 映像部署到 Azure 应用服务
- java - 有没有一种在java中使用堆的可靠方法?
- r - S3:在调用 NextMethod() 之前修改默认参数
- java - Java:Three digit Sum - Find out all the numbers between 1 and 999 where the sum of 1st digit and 2nd digit is equal to 3rd digit
- google-apps-script - 为每个编辑器自定义应用程序脚本插件菜单