[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Understanding why <tag></tag> is the way it is (wa

Subject: Re: Understanding why <tag></tag> is the way it is (was Re: IE Client side transformation issue)
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Fri, 03 Aug 2007 19:06:16 +0200
Re:  Understanding why <tag></tag> is the way it is (wa
David Carlisle wrote:
This is rather interesting, because in XHTML <script> has become a PCDATA element.

yes because CDATA elements don't exist in XML.

aha, I didn't realize of that.


Note however that this means that if you go

<script><![CDATA[some script]]></script>

then if the element is parsed as X(HT)ML the content of the element is
"some script"
so that is what the javascript sees.
If on the other hand you send it as text/html then the content of the
element is
"<![CDATA[some script]]>"
so that gets sent to javascript and generates javscript errors.

99 times out of 100 users blame this on IE not understanding <![CDATA
but there is no CDATA section in the script element as < is not special
within that scope.  that is, it's user error, not a broken browser.

So people end up doing

<script>
//<![CDATA[
some script
//]]>
</script>

so that the content of the element is

"//
some script
//
"
if parsed as XML and

"
//<![CDATA[
some script
//]]>
"

if parsed as HTML, both being valid javascript (with comments)

Yes, I always use that "hack" to make it valid for different systems (meant: used to, now I include all my js, saving a lot of trouble), but I hardly ever saw such a clear and precise and concise explanation, I'd like to use it for my new js/html students ;) if I may.


Also, it helps when testing locally (an HTML file is served as text/html because of the content type on your system) and testing remotely (an HTML file is served as application/xhtml+xml or some other variant, or even with agent sniffing serving different types to different agents).

Hmm, this brings me to the following oddity, something I honestly didn't get before: if you serve you document as text/html, the spec recommends (informatively again) that the DOM should be represented as an HTML DOM, which shows tagnames as uppercase. Serving it as any of the XML content types, shows the DOM as and XML DOM and/or HTML DOM, the former serving the tagnames as they are, in lowercase: http://www.w3.org/TR/xhtml1/#C_11

Are we, as mere mortals, supposed to make some eatable soup of all this? I consider upgrading myself to Jungle 2.0, where all I have to worry about is poisonous or non-poisonous vegetables to put in my soup and there are only three worries left: eat, multiply and die.

Cheers,
-- Abel Braaksma

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.