这是XML代码,您可以看到此项目组按字母和数字排序:
<LIGHT_RANGE_LIST>
<RANGE>W19</RANGE>
<RANGE>W17</RANGE>
<RANGE>R15</RANGE>
<RANGE>R13</RANGE>
<RANGE>R11</RANGE>
</LIGHT_RANGE_LIST>
这是我的XSLT代码:
<xsl:for-each select="RANGE">
<span style="text-align:center;font-family:Univers Condensed; font-size:9pt; ">
<xsl:apply-templates/>
</span>
</xsl:for-each>
我已临时应用此模板,获得此结果:
W19
W17
R15
R13
R11
我的最终目标是获得以下输出:
W19
R15
对于每个字母,请带上具有最大数值的字母 - 假设可以有一个字母(不是两个)
答案 0 :(得分:1)
尝试类似:
<?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" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:key name="by_letter" match="RANGE" use="substring(., 1, 1)" />
<xsl:template match="/">
<div>
<!-- for each distinct letter -->
<xsl:for-each select="LIGHT_RANGE_LIST/RANGE[generate-id() = generate-id(key('by_letter', substring(., 1, 1))[1])]">
<!-- process the subgroup -->
<xsl:for-each select="key('by_letter', substring(., 1, 1))">
<xsl:sort select="substring(., 2)" data-type="number" order="descending"/>
<xsl:if test="position()=1">
<span><xsl:value-of select="."/></span>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
查看解释here。
答案 1 :(得分:0)
最后,我研究你的版本并且我应用了这个,这是类似的,但由我创建。谢谢你的合作。
变量名称:
Lcorrente-&gt;当前信件
LSuccessiva-&gt;下一个字母
Ncorrente->当前编号
Nsuccessiva-&gt;下一个号码
<xsl:for-each select="RANGE">
<!-- Prendo le lettere-->
<xsl:variable name="LCorrente" select="substring(.,1,1)"/>
<xsl:variable name="LSuccessiva" select="substring(preceding-sibling::RANGE[1] [preceding::IMMUTABLE_ID=$EF],1,1)"/>
<!-- Prendo i numeri-->
<xsl:variable name="NCorrente" select="number(substring(.,2,string-length(.)-1))"/>
<xsl:variable name="NSuccessiva" select="number(substring(following-sibling::RANGE[1][preceding::IMMUTABLE_ID=$EF],2,string-length(following-sibling::RANGE[1][preceding::IMMUTABLE_ID=$EF])-1))"/>
<xsl:when test="$LCorrente!=$LSuccessiva">
<span style="font-family:Univers Condensed; font-size:9pt; color:orange; text-align:center;">
<xsl:value-of select="$LCorrente"/>
</span>
<span style="font-family:Univers Condensed; font-size:9pt; color:red; text-align:center; ">
<xsl:value-of select="$NCorrente"/>
</span>
</xsl:when>
</xsl:for-each>