- From: Philip Taylor <philip@zaynar.demon.co.uk>
- Date: Thu, 02 Aug 2007 19:04:56 +0100
- To: public-html@w3.org
Sam Ruby wrote: > Julian Reschke wrote: >> Sam Ruby wrote: >>>> Finally, there's also Internet Explorer's <xml> element. >>> >>> I recall that being generously described as "undocumented". Has that >>> changed? >> >> Such as <http://msdn2.microsoft.com/en-us/library/ms535918.aspx>? > > That's a bit... sparse ... on detail. IE5+ also does namespaced tags outside of <xml>, which are perhaps interesting - http://msdn2.microsoft.com/en-us/library/ms535160.aspx and http://msdn2.microsoft.com/en-us/library/ms531076.aspx give some incomplete and incorrect information. Rough experimentation suggests the following: Tags with a colon (more specifically, those that match the pattern ([a-zA-Z][^:>/\s]*):([^>/\s]+) or something close) anywhere in the document are treated as XML-like tags. They're mostly parsed the same way as <div>, <span>, etc, e.g. you can get a non-tree DOM by doing <a:a>1<b:b>2</a:a>3</b:b>. A trailing slash makes it parse as an empty element, as in XML. Everything else seems the same as normal HTML parsing. Elements created from XML-like tags have interesting properties "scopeName", "tagName", "tagUrn". tagUrn comes from namespace declarations: Putting an xmlns:foo="bar" attribute on an <html> tag (regardless of where that tag occurs in the document, or how many such tags you have) declares a namespace with the given scope name and URN. A tag (either start or end) with an unrecognised scope name implicitly declares a namespace with an empty URN. xmlns:foo on any other tag is ignored. (There are some complications if you define a namespace multiple times.) document.namespaces is an array of namespace objects (for all the explicitly- and implicity-declared namespaces in the document), each with properties "name" and "urn". (There's also "tagNames" but that always gives me a 'Not implemented' error. And there's also "onreadystatechange" and "readyState".) CSS selectors like "x\:y { ... }" match <x:y> elements. getElementsByTagName matches on the tagName, independent of the scopeName. If namespaces were added to HTML, I expect it would be quite beneficial to do it in a way that's sufficiently compatible with IE's implementation - the basic details appear to be vaguely sane, and must already be compatible with the existing web content (of which ~2% already uses namespaces, specifically Office's <o:p> plus a not-insignificant number of <v:...> and <st1:...> tags presumably also from Office). -- Philip Taylor philip@zaynar.demon.co.uk
Received on Thursday, 2 August 2007 18:05:16 UTC