Subject: Re: [xsl] sequential numbering with for-each From: "a kusa akusa8@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 1 Sep 2016 13:04:26 -0000 |
Thanks for the quick response. However, this will not work for me since there can be any amount of child nodes under tables. What I need is a way of sequentially numbering the output for each foo1. On Tue, Aug 30, 2016 at 4:40 PM, Heiko Niemann kontakt@xxxxxxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > You could save your strings (result) in a variable first and then do the > numbering in a second step (output): > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" > version="2.0"> > <xsl:output method="text" encoding="UTF-8"/> > <xsl:template match="/"> > > <xsl:variable as="xs:string*" name="foos"> > <xsl:for-each select="1 to 5"> > <xsl:sequence select="concat('Data', .,' - ok')"/> > <xsl:sequence select="concat('Data', .,' - not ok')"/> > </xsl:for-each> > </xsl:variable> > > <xsl:value-of separator="{codepoints-to-string(10)}"> > <xsl:for-each select="$foos"> > <xsl:sequence select="concat(position(), '. ', .)"/> > </xsl:for-each> > </xsl:value-of> > > </xsl:template> > </xsl:stylesheet> > > > Heiko > > >> Hello: >> >> I have a situation where I need to iterate over an element twice and >> output sequential numbers. >> >> I have two input files: >> >> First XML file. foo occurrence is 1 to infinity >> >> <root> >> >> <foo type="f1"> >> <foo1>ok</foo1> >> <foo1>not ok</foo1> >> </foo> >> >> </root> >> >> Second XML file. tables can occur 1 to infinity. tab1 can also occur 1 >> to infinity. >> >> <root1> >> >> <table ttype="f1"> >> >> <tables> >> <tab1> >> Data1 >> </tab1> >> >> <tab1> >> Data2 >> </tab1> >> >> >> </tables> >> <tables> >> <tab1> >> ...... >> </tab1> >> <tab1> >> Data3</tab1> >> </tables> >> </table> >> </root1> >> >> The logic is: >> >> for each /root/foo[@type = @ttype from 'root1']/foo1 >> >> repeat tab1 >> >> Desired output: >> >> 1. Data1 - ok >> 2.Data1 - not ok >> 3.Data2 - ok >> 4.Data2 - not ok >> 5.Data3 -ok >> 6.Data3-not ok >> >> I am able to get the individual 'tab1' elements to repeat. But my >> sequential numbering label is off. If I use position() within for-each >> it resets for every call in the for-each loop. >> >> I get: >> >> 1. Data1 - ok >> 2.Data1 - not ok >> 1.Data2 - ok >> 2.Data2 - not ok >> 1.Data3 -ok >> 2.Data3-not ok >> >> >> Any ideas or suggestions on how to make this work will be appreciated.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Thread | Re: [xsl] sequential numbering with, Heiko Niemann kontak | |
Date | [xsl] Kosher XSLT 3.0 numbering sol, David Sewell dsewell | |
Month |