我需要在xslt中将数字拆分为单独的数字

时间:2019-01-29 15:21:40

标签: xml xslt

我的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有什么办法吗?

2 个答案:

答案 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.

根据您的需要升序或降序更改订单