xsl-list
[Top] [All Lists]

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

2008-08-07 02:55:56

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. 
________________________________________________________________________

--~------------------------------------------------------------------
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>
--~--