Subject:process special charcter Author:David Chan Date:18 Jan 2006 09:47 AM
Hi all,
I am new to XML world.
I have a XML document like
Approval"</subject></ForApproval><order custnum="23" salesrep="RDR"><orderline itemnum="54"linenum="1"><price>31.22</price><qty>100</qty></orderline><orderline itemnum="55"
Seem I need to translate [< to <], [" to "], otherwsie I can't use XSLT, am i correct?
Subject:process special charcter Author:Tony Lavinio Date:18 Jan 2006 10:51 AM
What you posted looked like a fragment of an XML document that
was escaped according to XML rules. It itself it not XML,
because it is not 'well-formed' in that it doesn't have properly
nested opening and closing tags that use the actual '<' and '>'
characters, and attributes using either '"' or the apostrophe.
So, correct. What you have is not usable as input to XSLT, since
it's not XML.
Subject:process special charcter Author:Tony Lavinio Date:18 Jan 2006 12:10 PM
No, once it escaped or included an the value of an attribute,
it is just plain text, even if it looks like XML. Minollo's
pointer above may help, since the Saxon XSLT engine does have
special capabilities above and beyond the standard to handle
escaped XML masquerading as content.
Subject:process special charcter Author:Mike DiRenzo Date:19 Jan 2006 05:12 PM
Well, aside from using the Saxon parser, if I am using the latest and greatest version of MS IE, how can it be done?
Using c#, I passed in a well-formed XML string to my XSLT file. This file is expecting a parameter. The value is passed in, the variable holds the value but the value is escaped. The entire value in terms of converting each "<" and ">" to < and > respectively, is escaped.
I have also tryed assigning this value to an element. I would do the the transformation, grab the elements value and attempt to use it. But it is complete escaped out.
I have attempted to create variables in the XSLT file that would contain this escaped variable - but I would add a disbale-out-escape=yes to the value. This will render appropriately but I need to use it as a node tree so that I might iterate through each element and remap.
In effect, I am embedding a string variable containing well-formed XML.
It was my intenion to use this variable as a node tree fragment whereby I would loop through each child, grab the values and re-map into a diffrent tree.
Subject:process special charcter Author:Tony Lavinio Date:19 Jan 2006 05:25 PM
Once you embed escaped XML in XML, what is embedded is NO LONGER
XML, and therefore it is treated like any other text. No XSLT parser
will help, except for some cases where there are platform-specific
extensions to support this. Saxon is the only one I know of who
supports this.
The general advice of the XML community on xml-dev is "Don't do that."
Similar comments apply to disable-output-escaping. There is almost
always a safer way to go. One of the editors of the XSLT 2
specification (Dr. Michael Kay) said the following: "I think that in
general double-markup (markup disguised as text) is a bad idea, because
it's very confusing and not well supported by tools. It's much better
wherever possible to exploit the fact that XML is fully hierarchic, so
markup can always be nested.
That being said, there are some valid reasons for using it. But is
there a reason you can't just embed the XML as XML without escaping it?
Subject:process special charcter Author:Mike DiRenzo Date:20 Jan 2006 02:08 AM
I cannot thank you enough with assistance you have provided me. The previous note you posted contained a link to the very area of concern with which I wrote about. Ivan's posts have guided me through the "other-side". I have been cranking away at this problem for a the past three days with little sleep.
I will point out that Ivan's solution described a single string-based element contained in a NTF that all by itself can be considered well-formed. My case however was slightly different in that I had an entire NTF represented as a well-formed string emitted into my XSLT via a transformation. It is the XML within XML paradigm you spoke of in your previous note. My solution was to iterate through it - post C# NodeIterator processing.
Here it is:
<!-- The well-formed string-based XML is converted and stored here-->
<xsl:variable name="dynamicXML" select="cs:parse(XMLStringValue)"/>
Subject:process special charcter Author:Mike DiRenzo Date:19 Jan 2006 11:36 PM
Well, aside from using the Saxon parser, if I am using the latest and greatest version of MS IE, how can it be done?
Using c#, I passed in a well-formed XML string to my XSLT file. This file is expecting a parameter. The value is passed in, the variable holds the value but the value is escaped. The entire value in terms of converting each "<" and ">" to < and > respectively, is escaped.
I have also tryed assigning this value to an element. I would do the the transformation, grab the elements value and attempt to use it. But it is complete escaped out.
I have attempted to create variables in the XSLT file that would contain this escaped variable - but I would add a disbale-out-escape=yes to the value. This will render appropriately but I need to use it as a node tree so that I might iterate through each element and remap.
In effect, I am embedding a string variable containing well-formed XML.
It was my intenion to use this variable as a node tree fragment whereby I would loop through each child, grab the values and re-map into a diffrent tree.