This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: cdata output and different xslt processors
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] cdata output and different xslt processors
- From: David Carlisle <davidc at nag dot co dot uk>
- Date: Mon, 29 Oct 2001 00:14:34 GMT
- References: <AHEFKMGELJLFIAPLBKNJOEBNCLAA.rob@koberg.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
I have been porting my presentation layer to use different backend
processors. So far using saxon-java has been the easiest except for it's
handling of cdata. I was wondering if the was a standard way of handling
it, specifically "<" and ">"?
To me, it would seem that the xslt processor should supply the markup
without escaping it. I have seen a response on this from Mike Kay in a post
on Oct 2000 saying:
"Because the angle brackets are in a CDATA section, they are ordinary
characters, not markup, so they have to be output as ordinary characters."
My understanding is that whatever is between cdata brackets should be passed
"as-is". Wouldn't this be easiest for people to understand? I realize there
must be some reason for Saxon not doing this. What is it? WHy do the other
processors I have used not do this?
To any XSLT system (and any XML application) input of
<![CDATA[<aaa>]]> should be the same as input of <aaa>
an XSLT system just can't tell which form the source file had.
That is the whole point of CDATAS marked sections it's a convenience
feature for an author to save quoting each < and & individually
but the whole point is taht it should be equivalent to the quoted form.
In a situation I have the workaround (xsl:text
disable-out-put-escaping="yes") is ugly and does not produce the same
results as cdata (that does not escape "<" or ">"). I have to (???) use
cdata because i am trying to output some non-standard browser stuff, here is
a snippet using xsl:text:
Why are you outputting this as text rather than as an element with
attributes?????????
<xsl:text disable-output-escaping="yes">
<DIV STYLE="position:absolute; padding:5px; background:menu;
border:2px outset #cccccc;">
<myMenu:menu id="Site" onsubmenu_click="doFunction()" >Site
<myMenu:menu id="mnItem_GenSite">Generate
Site</myMenu:menu>
<myMenu:menu id="mnItem_PromoteSite">Promote
Site</myMenu:menu>
<myMenu:menu
id="mnItem_EditProps_Site">Properties</myMenu:menu>
<myMenu:menu id="mnItem_SiteMap">View
Sitemap</myMenu:menu>
<myMenu:menu id="mnItem_New_Site">Edit Another
Site</myMenu:menu>
</myMenu:menu>
....snip.....
maybe the answer to my question above is in the paragraph below, but
if so I don't understand. Given that your stylesheet is using the myMenu
namespace why do you want to avoid declaring it?
Is there another way I can handle this? I don't want to declare the
namespace for the transformation on the server. I want it to be used only on
the client.
thanks for any help/insight,
-Rob
David
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list