- From: Dave Raggett <dsr@w3.org>
- Date: Tue, 5 Sep 2006 10:04:07 +0100 (BST)
- To: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- Cc: Doug Schepers <doug.schepers@vectoreal.com>, www-forms@w3.org
For text/html, IE applies special parsing rules for HTML elements because unfortunately there are many websites with malformed markup. For non HTML elements it honor's the /> syntax, unlike Firefox and Opera. I don't have a Mac and hence wasn't able to test Safari. Thus for the following markup: -------------8< cut here--------------- <?xml version="1.0" encoding="utf-8"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://example.com/eforms" xml:lang="en" lang="en"> <head> <title>Mixed markup test</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="test.js" type="text/javascript"> </script> <style type="text/css"> f\:model { display: none; visibility: hidden } f\:field { display: block } </style> </head> <body> <h1>Mixed markup test</h1> <bind id="b1" name="fred"/> <f:model id="form">hello</f:model> <f:field ref="form/name1">Given Name</f:field> <f:field ref="form/name2">Family Name</f:field> <f:submit id="submit" ref="form"/> This form is written in custom XML. </body> </html> -------------8< cut here--------------- IE6 gives the following DOM for the body element: <BODY> <H1> Mixed markup test </H1> <BIND/> <model> hello </model> <field> Given Name </field> <field> Family Name </field> <submit/> This form is written in custom XML </BODY> The above was obtained by using a script to walk through the DOM tree for document.body. The script just used the nodeName for the tags and on IE this means you don't get to see the namespace prefixes. Note that the bind element is shown as upper case because it isn't in an XML namespace. The original case is preserved if the element has a namespace, e.g. <h:bind id="b1" name="fred"/> where h has to have been bound to a namespace URI. Firefox and Opera treat "/>" as if it was ">". Firefox also forces all elements to uppercase. Opera doesn't. It seems that browser developers aren't particularly thorough in reverse engineering IE's behavior in parsing well formed markup. My point is that if all browsers honored the /> syntax for non HTML elements delivered as text/html and preserved the case, it would make it that much easier to deploy mixed markup documents. Currently, you have to patch up the DOM tree for Firefox and Opera to recover the intended document structure. Dave Raggett <dsr@w3.org> W3C lead for multimodal interaction http://www.w3.org/People/Raggett +44 1225 866240 (or 867351)
Received on Tuesday, 5 September 2006 09:04:14 UTC