xsl-list
[Top] [All Lists]

Re: Joining sibling elements

2005-08-10 23:37:46
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

On 8/10/05, Marcin Miłkowski <milek_pl(_at_)o2(_dot_)pl> wrote:
Hi,

I'm wondering if it's practical to use XSLT in a following scenario: you
have an XML file which should be reformatted (formatted "tidy") to join
sibling elements, like:

<b>this</b><b> </b><b>is</b><b> </b><b>bold<text</b>

which should be transformed this:

<b>this is bold text</b>

Or, in a more complex example:

<a><b>this</b></a><a><b> </b></a><a><b>more</b></a><a><b>
</b></a><a><b>text</b></a>

So this is a transformation to keep the resulting file tidy, with less
tagging. I'm planning such a transformation for WordML files before
submitting them for translation where less tagging means higher
translation quality.

Thank you for all advice,
       Marcin Milkowski
<Prev in Thread] Current Thread [Next in Thread>