Re: [xsl] Need help with tokenize functionality in XSLT 1.0

Subject: Re: [xsl] Need help with tokenize functionality in XSLT 1.0
From: "Prady Prady prady.chin@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 25 Aug 2020 21:00:08 -0000
Thank you very much for your input.

Yes. input can contain details about single order or multiple orders and it
might or might not end with ";".

On Tue, 25 Aug 2020 at 16:53, David Carlisle d.p.carlisle@xxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> You changed the format. in the form you showed originally every item
> terminated with a ; you had two items, and two ;
> the form you show now has one item but no ;
>
> You could add the trailing  ; by making the initial param
>
> <xsl:param name="details" select="concat(invoiceDetails,';')"/>
>
> On Tue, 25 Aug 2020 at 21:41, Prady Prady prady.chin@xxxxxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
>> This works good. Thanks for the solution.
>>
>>
>> But this is not working if there is only one order
>>
>> eg:
>> =====================
>> Input xml:
>>
>> <Payments>
>>
>> <Payment>
>>
>> <invoiceDetails>order1#amt1</invoiceDetails>
>>
>> </Payment>
>>
>> </Payments>
>>
>> I need to be able to convert this to:
>> Output xml:
>>
>> <Orders>
>>
>> <Order>
>>
>> <OrderNumber>order1</OrderNumber>
>>
>> <Amount>amt1</Amount>
>>
>> </Order>
>>
>> </Orders>
>> ======================
>>
>> On Thu, 20 Aug 2020 at 12:52, Leo Studer leo.studer@xxxxxxxxxxx <
>> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>>
>>> Nice, a recursive template with a parameter ;-)
>>>
>>> Cheers
>>> Leo
>>>
>>>
>>> >
>>> > <xsl:template match="Payment">
>>> >  <xsl:param name="details" select="invoiceDetails"/>
>>> >  <xsl:variable name="car" select="substring-before($details,';')"/>
>>> >  <xsl:variable name="cdr" select="substring-after($details,';')"/>
>>> >  <Order>
>>> >   <OrderNumber><xsl:value-of
>>> select="substring-before($car,'#')"/></OrderNumber>
>>> >   <Ammount><xsl:value-of select="substring-after($car,'#')"/></Ammount>
>>> >  </Order>
>>> >  <xsl:if test="contains($cdr,'#')">
>>> >   <xsl:apply-templates select=".">
>>> >    <xsl:with-param name="details" select="$cdr"/>
>>> >   </xsl:apply-templates>
>>> >  </xsl:if>
>>> > </xsl:template>
>>> >
>>>
>>> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
>> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/2739265> (by
>> email)
>>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/3397216> (by
> email <>)

Current Thread