|
Subject: [xsl] Select Data for individual child node From: Rashi Bhardwaj <rashi.bhardwaj@xxxxxxxxx> Date: Tue, 23 Nov 2010 17:29:27 +0530 |
Hi All,
I m stuck in between to some issue, please help me out....
Input xml:
<test>
<a>
<b name ='1'></b>
<b name ='2'></b>
<b name ='3'>
<c>aaa</c>
</b>
<b name ='4'>
<c>bbb</c>
<c>ccc</c>
</b>
<b name ='4'>
<c>dddd</c>
<c>eeee</c>
</b>
</a>
<a>
<b name ='1'></b>
<b name ='2'>
<c>fffff</c>
</b>
<b name ='3'></b>
<b name ='4'>
<c>gggg</c>
</b>
</a>
</test>
Xsl used:
<xsl:template match="/">
<html>
<body>
<table>
<tbody>
<tr>
<th>
<xsl:value-of select="$CustomSelect"/>
</th>
<th>
</th>
</tr>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:variable name="CustomSelect">
<xsl:text>position: </xsl:text>
<xsl:call-template name="test">
</xsl:call-template>
</xsl:variable>
<xsl:template name="test">
<xsl:call-template name="test2">
<xsl:with-param name="node" select="//b[c][not(@name
=preceding::b[child::c]/@name)]/@name"/>
</xsl:call-template>
<xsl:template name="test2" match="*" mode="test2">
<xsl:param name="node"/>
<xsl:for-each select="//b[c][not(@name
=preceding::b[child::c]/@name)]/@name">
<xsl:variable name="InitialList">
<xsl:for-each select="//c[1][ancestor::b/@name=$node]">
<xsl:text disable-output-escaping="no">'</xsl:text>
<xsl:value-of select="./text()"/>
<xsl:text disable-output-escaping="no">', </xsl:text>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="concat('[',substring($InitialList, 1,
string-length($InitialList)-2), ']')"/>
</xsl:for-each>
</xsl:template>
output i m getting:
<th>position: ['aaa', 'bbb', 'ccc', 'dddd', 'eeee', 'fffff',
'gggg']['aaa', 'bbb', 'ccc', 'dddd', 'eeee', 'fffff', 'gggg']['aaa',
'bbb', 'ccc', 'dddd', 'eeee', 'fffff', 'gggg']</th>
Desired output:
<th>position: ['aaa'],['bbb', 'ccc', 'dddd', 'eeee', 'gggg'], ['ffff']</th>
That is for b(@name='3'), there is only one 'c' in the complete xml,
so the first square bracket contains 'aaa'. Similarly, for
b[@name='4'], there are four c elements in the complete xml, i.e. bbb,
ccc; dddd, eeee and gggg, so it was listed in second sq brackets.
Please let me know is this possible........please help me out..........
Thanks....
--
Rashi Bhardwaj
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Adding the results of cou, David Carlisle | Thread | Re: [xsl] Select Data for individua, David Carlisle |
| Re: [xsl] Adding the results of cou, David Carlisle | Date | Re: [xsl] Select Data for individua, David Carlisle |
| Month |