Hi Mukul,
this is a good idea and I'll try to use variables for comparing. Note
that I have to retain all attributes and elements which is quite tricky
in scenarios like:
<a><b atr1="12"><c><d>text</d></c></b><b atr1="12><c><d> </d></c><b><b
atr1="13"><c><d>etc.</d></c><b>
especially when I cannot predict which and how many elements would
appear under <b> but I know that <d> contains only text value.
Seems to me I have to compare rtfs containing all elements except for
<d>. So I would try to create two variables: first one containing such
rtf of the current <b>, and a second one containing following-sibling of
this current <b>. If they are the same, copy text() from <d> to the rtf
of current <b>, and write this rtf to the output. If not, write both
rtfs to the output.
The problem is that I don't know how to construct the for-each statement
to process exactly the current <b> and its following sibling, and to
skip the following sibling from processing...
Best regards,
Marcin
Mukul Gandhi wrote:
Given this XML -
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a><b>this</b><b>this 1</b><b>this 2</b></a>
<a><b>this 3</b></a>
<a><b>this 4</b><b>this 5</b></a>
<a><b>this 6</b><b>this 7</b><b>this 8</b><b>this 9</b></a>
<a><b>this 10</b><b>this 11</b><b>this 12</b><b>this 13</b></a>
</root>
This XSLT stylesheet -
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:common="http://exslt.org/common"
exclude-result-prefixes="common">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/root">
<root>
<xsl:apply-templates select="a"/>
</root>
</xsl:template>
<xsl:template match="a">
<b>
<xsl:variable name="rtf"><xsl:for-each select="b"><xsl:value-of
select="."/><xsl:text> </xsl:text></xsl:for-each></xsl:variable>
<xsl:value-of select="common:node-set($rtf)/text()"/>
</b>
</xsl:template>
</xsl:stylesheet>
Produces following output -
<?xml version="1.0" encoding="utf-8"?>
<root>
<b>this this 1 this 2 </b>
<b>this 3 </b>
<b>this 4 this 5 </b>
<b>this 6 this 7 this 8 this 9 </b>
<b>this 10 this 11 this 12 this 13 </b>
</root>
Hope this helps,
Regards,
Mukul
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--