Re: [xsl] Escaping <xsl:element> ouput

Subject: Re: [xsl] Escaping <xsl:element> ouput
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 7 Aug 2008 10:55:34 +0100
> I'm using the XSLT version 2.0
that simplifies things then.

so first generate the html that you need, don't worry about javascript

<xsl:variable name="html">
  <xsl:apply-templates.....
</xsl:variable>

so then if you went

<xsl:copy-of select="$html"/>


you'd get

<table width="100%">
    <tr>
       <td width="150">
          Name :
          <input type="text" value="[name_node_value]"/>
       </td>
    </tr>
...

so what you want to do is

<xsl:apply-templates mode="javascript" select="$html"/>

together with templates such as

<xsl:template match="*" mode="javascript">
 <xsl:text>&lt;</xsl:text>
 <xsl:value-of select="local-name()"/>
 <xsl:apply-template select="@*" mode="javascript"/>
 <xsl:text>&gt;</xsl:text>
  <xsl:apply-template select="node()" mode="javascript"/>
 <xsl:text>&lt;/</xsl:text>
 <xsl:value-of select="local-name()"/>
 <xsl:text>&gt;</xsl:text>
</xsl:template>


<xsl:template match="text()" mode="javascript">
  <xsl:value-of select="replace(.,'&quot;','\&quot;')"/>
</xsl:template>


<xsl:template match="@*" mode="javascript">
 <xsl:text> </xsl:text>
 <xsl:value-of select="local-name()"/>
 <xsl:text>=\"</xsl:text>
  <xsl:value-of select="replace(.,'&quot;','\&quot;')"/>
 <xsl:text>\"</xsl:text>
</xsl:template>


David


incidentally despite the xsl:element in the subject line you only need
 xsl:element if the element name is being calculated.
>>   <xsl:element name="input">
>>          <xsl:attribute name="type">hidden<xsl:attribute>
>>          <xsl:attribute name="value">[some value computed 
>> before]</xsl:attribute>

I would write the above as

  <input type="hidden" value="[some value computed before]"/>

using xsl:element and xsl:attribute when the element and attribute names
are known just tends to obfuscate the code.

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread