【发布时间】:2014-03-27 22:28:18
【问题描述】:
我的 XSLT 按字母顺序对姓氏进行排序,但我只是注意到有些名字以“de”和“von”或“van”开头。这些小写前缀被排序并放置在大写名称之后。如何告诉 XSLT 将所有案例排序在一起?
使用 XSLT 1.0
这是对数据进行排序的部分:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Data">
<xsl:strip-space elements="*"/>
<xsl:template match="Data">
<xsl:copy>
<xsl:apply-templates select="Consultant">
<xsl:sort select="Surname" order="ascending" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="Consultant">
<consultant><Surname><xsl:value-of select="Surname"/></Surname>
<FirstName><xsl:value-of select="FirstName"/></FirstName>
<!--…-->
</consultant>
</xsl:template>
</xsl:stylesheet>
这是一些示例 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<consultant>
<Surname>Arnon</Surname>
<FirstName>Lana</FirstName>
</consultant>
<consultant>
<Surname>von Armon</Surname>
<FirstName>George</FirstName>
</consultant>
<consultant>
<Surname>Arnon</Surname>
<FirstName>Lana</FirstName>
</consultant>
<consultant>
<Surname>de Armon</Surname>
<FirstName>George</FirstName>
</consultant>
</Data>
【问题讨论】:
-
您介意添加一个完整的 XSLT 样式表和一个完整的输入 XML 以便人们可以测试吗?谢谢。
-
请注明 XSLT 1.0 或 2.0。
-
好的,添加了更多示例内容,我们正在使用 XSLT 1.0
-
"von Armon" 应该出现在 "Arnon" 之前 - 这是你的意思吗?