[XSL-LIST Mailing List Archive Home]
[Reply To This Message]
Re: Escaping <xsl:element> ouput
True, even I felt that the explanation of my problem was a bit
convoluted. I'll try and simply put across what it is that I'm trying to
achieve here [though the scope of the whole problem is a bit too vast]:
Considering that I have an input XML like:
This XML data needs to be converted into an HTML-like snippet which
would then be used to construct a JSON object. I'm not quite sure
whether you've worked with JSON before, but it is simply a name-value
double-quotes ("). So basically, whatever value has to go in, CANNOT
contain any ", or all " need to be escaped (\").
So coming back to the XML above, the XSLT should generate a HTML-like
snippet shown below:
<input type=\"text\" value=\"[name_node_value]\"/>
<input type=\"text\" value=\"[age_node_value]\"/>
<input type=\"text\" value=\"[city_node_value]\"/>
This text can then be set as a value in the JSON construct.
The alogrithm I tried to adopt was:
1. Process i/p XML and store transformed text in a variable.
2. Use the text within this variable and use the in-built XSLT function
replace, to substitute all occurrences of " with \"
I hope this would help you understand my problem a bit better.
Michael Kay wrote:
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.
From: Anirvan Majumdar [mailto:anirban.majumdar@xxxxxxxxxxxxx]
Sent: 07 August 2008 09:38
Subject: 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
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
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format