我的XML中有一个数字,例如12345678。我需要将此数字拆分为数字,然后将其乘以例如87654321,像这样:
1 2 3 4 5 6 7 8 4 3 5 6 7 8 2 1 ---------------------- 4 6 15 24 35 48 14 9
使用XSLT有什么办法吗?
答案 0 :(得分:0)
如果处理器支持XSLT 2.0,则可以执行以下操作:
XML
<input>43567821</input>
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="factors">12345678</xsl:param>
<xsl:template match="/">
<output>
<xsl:value-of select="for $i in 1 to string-length(input) return number(substring(input, $i, 1)) * number(substring($factors, $i, 1))"/>
</output>
</xsl:template>
</xsl:stylesheet>
结果
<?xml version="1.0" encoding="UTF-8"?>
<output>4 6 15 24 35 48 14 8</output>
请注意,这要求factors
中的位数等于或大于输入中的位数。
答案 1 :(得分:0)
<xsl:template match="input">
<xsl:variable name="sort">
<xsl:analyze-string select="." regex="[0-9]">
<xsl:matching-substring>
<i><xsl:value-of select="."/></i>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:apply-templates select="$sort/i">
<xsl:sort order="ascending"/>
</xsl:apply-templates>
</xsl:template>
You may also use this to sort your number.
根据您的需要升序或降序更改订单