Мне нужно разделить число на отдельные цифры в xslt - PullRequest
0 голосов
/ 29 января 2019

У меня есть номер в моем 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 голосов
/ 31 января 2019
<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.

Изменить порядок в соответствии с вашими потребностями по возрастанию или убыванию

0 голосов
/ 29 января 2019

Если ваш процессор поддерживает 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 было равно или больше количества цифр на входе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...