在XSLT(2.0首选)中,如何将数组中的数字序列转换为数字范围,例如。 import scipy
import pdb;pdb.set_trace()
print(scipy)
print(dir(scipy))
到<a>1, 2, 3, 6, 7, 9</a>
?
答案 0 :(得分:2)
您只需使用for-each-group select="$sequence" group-adjacent="xs:integer(.) - position()"
:
<xsl:template match="a">
<xsl:copy>
<xsl:value-of separator=", ">
<xsl:for-each-group select="tokenize(., ',\s*')"
group-adjacent="xs:integer(.) - position()">
<xsl:sequence
select="
if (not(current-group()[2])) then
.
else
concat(., '-', current-group()[last()])"/>
</xsl:for-each-group>
</xsl:value-of>
</xsl:copy>
</xsl:template>
变换
<a>1, 2, 3, 6, 7, 9</a>
进入
<a>1-3, 6-7, 9</a>