merging two sequences in xslt 
October 15th, 2008, 03:35 PM
| | | |
Hi,
i have some xml that looks like this:
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>a,b,c,d,e,f,g,h</b>
</parent>
what i need i this:
<parent>
<ab>a 1 b 2 c 3 d 4 ...</ab>
</parent>
How can i do this? I thought of tokenizing the values of <aand <b>
into sequences, but i dont know how to merge them together.
Does anybody has a solution to this problem?
cheers, Johannes | 
October 15th, 2008, 03:45 PM
| | | | re: merging two sequences in xslt
May be using fn:string-join ? http://www.xqueryfunctions.com/xq/fn_string-join.html
JMan wrote: Quote:
Hi,
i have some xml that looks like this:
>
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>a,b,c,d,e,f,g,h</b>
</parent>
>
what i need i this:
<parent>
<ab>a 1 b 2 c 3 d 4 ...</ab>
</parent>
>
How can i do this? I thought of tokenizing the values of <aand <b>
into sequences, but i dont know how to merge them together.
Does anybody has a solution to this problem?
>
cheers, Johannes
| | 
October 15th, 2008, 03:55 PM
| | | | re: merging two sequences in xslt
Well, to use fn:string join i would still need to first merge the two
sequences together wouldn't i?
cheers, Johannes
On 15 Okt., 16:42, dahu <d...@dahu.frwrote: Quote:
May be using fn:string-join ?
> http://www.xqueryfunctions.com/xq/fn_string-join.html
>
JMan wrote: Quote:
Hi,
i have some xml that looks like this:
| > Quote:
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>a,b,c,d,e,f,g,h</b>
</parent>
| > Quote:
what i need i this:
<parent>
<ab>a 1 b 2 c 3 d 4 ...</ab>
</parent>
| > Quote:
How can i do this? I thought of tokenizing the values of <aand <b>
into sequences, but i dont know how to merge them together.
Does anybody has a solution to this problem?
| > | | 
October 15th, 2008, 04:05 PM
| | | | re: merging two sequences in xslt
JMan wrote: Quote:
Hi,
i have some xml that looks like this:
>
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>a,b,c,d,e,f,g,h</b>
</parent>
>
what i need i this:
<parent>
<ab>a 1 b 2 c 3 d 4 ...</ab>
</parent>
>
How can i do this? I thought of tokenizing the values of <aand <b>
into sequences, but i dont know how to merge them together.
|
<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:template match="parent">
<xsl:copy>
<xsl:variable name="l1" as="xs:string*" select="tokenize(a, ',')"/>
<xsl:variable name="l2" as="xs:string*" select="tokenize(b, ',')"/>
<ab>
<xsl:value-of select="for $p in 1 to count($l1) return
($l2[$p], $l1[$p])" separator=" "/>
</ab>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
--
Martin Honnen http://JavaScript.FAQTs.com/ | 
October 15th, 2008, 05:05 PM
| | | | re: merging two sequences in xslt
Hi Martin,
thanks for your reply. Its actually not yet working for me. l1 and l2
are of count==1 so what i get is pretty much what i put in. There
seems to be a problem with assiging the sequences to the veriables.
Can you fix it?
thanks, Johannes Quote:
JMan wrote: Quote:
Hi,
i have some xml that looks like this:
| > Quote:
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>a,b,c,d,e,f,g,h</b>
</parent>
| > Quote:
what i need i this:
<parent>
<ab>a 1 b 2 c 3 d 4 ...</ab>
</parent>
| > Quote:
How can i do this? I thought of tokenizing the values of <aand <b>
into sequences, but i dont know how to merge them together.
| >
<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:template match="parent">
* * *<xsl:copy>
* * * *<xsl:variable name="l1" as="xs:string*" select="tokenize(a, ',')"/>
* * * *<xsl:variable name="l2" as="xs:string*" select="tokenize(b, ',')"/>
* * * *<ab>
* * * * *<xsl:value-of select="for $p in 1 to count($l1) return
($l2[$p], $l1[$p])" separator=" "/>
* * * *</ab>
* * *</xsl:copy>
* *</xsl:template>
>
</xsl:stylesheet>
>
--
>
* * * * Martin Honnen
* * * *http://JavaScript.FAQTs.com/ | | 
October 15th, 2008, 05:15 PM
| | | | re: merging two sequences in xslt
Martin!
thanks alot!
cheers, Johannes
On 15 Okt., 17:02, Martin Honnen <mahotr...@yahoo.dewrote: Quote:
JMan wrote: Quote:
Hi,
i have some xml that looks like this:
| > Quote:
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>a,b,c,d,e,f,g,h</b>
</parent>
| > Quote:
what i need i this:
<parent>
<ab>a 1 b 2 c 3 d 4 ...</ab>
</parent>
| > Quote:
How can i do this? I thought of tokenizing the values of <aand <b>
into sequences, but i dont know how to merge them together.
| >
<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:template match="parent">
* * *<xsl:copy>
* * * *<xsl:variable name="l1" as="xs:string*" select="tokenize(a, ',')"/>
* * * *<xsl:variable name="l2" as="xs:string*" select="tokenize(b, ',')"/>
* * * *<ab>
* * * * *<xsl:value-of select="for $p in 1 to count($l1) return
($l2[$p], $l1[$p])" separator=" "/>
* * * *</ab>
* * *</xsl:copy>
* *</xsl:template>
>
</xsl:stylesheet>
>
--
>
* * * * Martin Honnen
* * * *http://JavaScript.FAQTs.com/ | | 
October 15th, 2008, 05:35 PM
| | | | re: merging two sequences in xslt
can i change the datatypes of the lists, so that i can do something
like
<xsl:value-of select="for $p in 1 to count($l1) return ($l2[$p] div
10 , $l1[$p] div 10)" separator=" "/?
cheers, Johannes
On 15 Okt., 18:09, JMan <JohannesElsingho...@gmail.comwrote: Quote:
Martin!
thanks alot!
>
cheers, Johannes
>
On 15 Okt., 17:02, Martin Honnen <mahotr...@yahoo.dewrote:
> Quote:
JMan wrote: Quote:
Hi,
i have some xml that looks like this:
| | > Quote: Quote:
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>a,b,c,d,e,f,g,h</b>
</parent>
| | > Quote: Quote:
what i need i this:
<parent>
<ab>a 1 b 2 c 3 d 4 ...</ab>
</parent>
| | > Quote: Quote:
How can i do this? I thought of tokenizing the values of <aand <b>
into sequences, but i dont know how to merge them together.
| | > Quote:
<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">
| > Quote:
* *<xsl:template match="parent">
* * *<xsl:copy>
* * * *<xsl:variable name="l1" as="xs:string*" select="tokenize(a, ',')"/>
* * * *<xsl:variable name="l2" as="xs:string*" select="tokenize(b, ',')"/>
* * * *<ab>
* * * * *<xsl:value-of select="for $p in 1 to count($l1) return
($l2[$p], $l1[$p])" separator=" "/>
* * * *</ab>
* * *</xsl:copy>
* *</xsl:template>
| >>> | | 
October 15th, 2008, 05:55 PM
| | | | re: merging two sequences in xslt
JMan wrote: Quote:
can i change the datatypes of the lists, so that i can do something
like
<xsl:value-of select="for $p in 1 to count($l1) return ($l2[$p] div
10 , $l1[$p] div 10)" separator=" "/?
| I don't understand how you expect the values a,b,c and so on to be
treated as numbers.
However let's assume you have different input data
<parent>
<a>1,2,3,4,5,6,7,8</a>
<b>10,20,30,40,50,60,70,80</b>
</parent>
then you can of course convert the string sequence the tokenize function
gives you to a number sequence:
<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:template match="parent">
<xsl:copy>
<xsl:variable name="l1" as="xs:double*" select="for $item in
tokenize(a, ',') return xs:double($item)"/>
<xsl:variable name="l2" as="xs:double*" select="for $item in
tokenize(b, ',') return xs:double($item)"/>
<ab>
<xsl:value-of select="for $p in 1 to count($l1) return ($l2[$p]
div 10, $l1[$p] div 10)" separator=" "/>
</ab>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
--
Martin Honnen http://JavaScript.FAQTs.com/ |  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 225,662 network members.
|