Subject: Re: [xsl] Escaping <xsl:element> ouput|
From: Anirvan Majumdar <anirban.majumdar@xxxxxxxxxxxxx>
Date: Thu, 07 Aug 2008 14:58:39 +0530
<person> <name>ABC</name> <age>24</age> <city>Bangalore</city> </person>
<table width=\"100%\"> <tr> <td width=\"150\"> Name : <input type=\"text\" value=\"[name_node_value]\"/> </td> </tr> <tr> <td width=\"150\"> Age : <input type=\"text\" value=\"[age_node_value]\"/> </td> </tr> <tr> <td width=\"150\"> City : <input type=\"text\" value=\"[city_node_value]\"/> </td> </tr> </table>
You're talking about "tags". Tags don't exist in the data manipulated by XSLT. XSLT only manipulates nodes in a tree. The way to solve your problem is to use XSLT the way it was designed to be used: forget about CDATA and tags, and think about element nodes.
Now take a step back, and tell us what you actually want to achieve - that is, the input and output of your transformation, rather than your incorrect attempts at coding the solution.
Michael Kay http://www.saxonica.com/
From: Anirvan Majumdar [mailto:anirban.majumdar@xxxxxxxxxxxxx] Sent: 07 August 2008 09:38
Subject: [xsl] Escaping <xsl:element> ouput
I have a <xsl:variable> element which contains HTML snippet. Parts of this snippet are generated by transformations of other XSLT elements present.
Next on, I'd like to take this <xsl:variable>'s value and apply some string manipulation templates on it. I realized that if I wanted to extract the value inclusive of tags then I needed to include the HTML code, and not the XSLT code, within <![CDATA]]> sections. Everything seemed to be going fine until I realized that all the content generated through the <xsl:element>s was missing. The tags are ignored and only the node value is captured.
How can I get around this problem? I checked and there is no way for output escaping in <xsl:element>, and neither is there any point of putting the code within <[CDATA]> since the transformations won't occure only.
I also thought of using <xsl:copy-of> to extract the variable value, but this isn't of much use to me, since the data extracted through copy-of cannot be used for any further processing as such. I can only display this value [something like <xsl:value-of>]
Here's an example of the kind of XSL I'm working on:
<input type="text" value="A" name="txtVal"/>
<xsl:attribute name="value">[some value computed before]</xsl:attribute>