[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: What is the equivalent for-each of <xsl:copy-of

Subject: Re: What is the equivalent for-each of <xsl:copy-of select="$elements"/>
From: Alex Muir <alex.g.muir@xxxxxxxxx>
Date: Sun, 16 May 2010 16:07:19 +0000
Re:  What is the equivalent for-each of <xsl:copy-of
Thanks Mukul,

This worked for me.
<xsl:apply-templates select="$tableAsXML" mode="x" />

 <xsl:template match="*" mode="x">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates mode="x"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="text()" mode="x">
    <xsl:call-template name="normalizeEntityForHTML">
      <xsl:with-param name="arg" select="."/>
    </xsl:call-template>
  </xsl:template>

And Martin your right it was outputting content just not with the
correct html table hierarchy like so.

<table id="mh43527">  </table>
               <tr id="mh43529">     </tr>
               <td id="mh43531">&nbsp;</td>
               <td id="mh43533">&nbsp;</td>
               <td id="mh43535">&nbsp;</td>

I made a mistake of looking at the view source from firefox. Firefox
was modifying the poor input such that the elements in the table were
not present in the source.

Regards
Alex



On Sun, May 16, 2010 at 3:41 PM, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote:
> I guess, you could accomplish this with a special 'mode' defined for
> templates. Perhaps something like below:
>
> <xsl:apply-templates select="$tableAsXML" mode="x" />
>
> <xsl:template match="*" mode="x">
>    <xsl:copy>
>       <xsl:copy-of select="@*"/>
>       <xsl:apply-templates mode="x" />
>  </xsl:copy>
> </xsl:template>
>
> <xsl:template match="text()" mode="x">
>    <!-- do something -->
> </xsl:template>
>
> On Sun, May 16, 2010 at 8:19 PM, Alex Muir <alex.g.muir@xxxxxxxxx> wrote:
>>  Hi,
>>
>> Given a function that returns html elements stored within the
>> tableAsXML variable
>>
>>     <xsl:variable name="tableAsXML" as="element()*">
>>         <xsl:copy-of select="d:htmlparse($arg)"/>
>>       </xsl:variable>
>>
>> I can output the elements within an html document like so correctly
>>
>>         <xsl:copy-of select="$tableAsXML"/>
>>
>> However I want to copy all the elements and apply a template to the
text().
>>
>> The output I get for the following for-each loop is only the text and
>> no html elements and I'm struggling to figure out why.
>>
>>      <xsl:for-each select="$tableAsXML//*">
>>           <xsl:copy>
>>             <xsl:copy-of select="@*"/>
>>             <xsl:call-template name="normalizeEntityForHTML">
>>               <xsl:with-param name="arg" select="text()[1]"/>
>>             </xsl:call-template>
>>           </xsl:copy>
>>       </xsl:for-each>
>>
>> What do I need to do differently to copy the elements within
>> $tableAsXML and apply a template to each element text node?
>>
>> Thanks
>>
>> --
>> Alex
>>
>> An informal recording with one mic under a tree leads to some pretty
>> sweet acoustic sounds.
>> https://sites.google.com/site/greigconteh/albums/diabarte-and-sons
>
>
>
> --
> Regards,
> Mukul Gandhi
>
>



--
Alex

An informal recording with one mic under a tree leads to some pretty
sweet acoustic sounds.
https://sites.google.com/site/greigconteh/albums/diabarte-and-sons

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.