Re: [xsl] xsl:element will not create an output element, in any context

Subject: Re: [xsl] xsl:element will not create an output element, in any context
From: Abel Braaksma <>
Date: Fri, 01 Jun 2007 21:23:33 +0200
David Carlisle wrote:
Produces '<xhtml:ul>...</xhtml:ul>' in the output XML.

which (assuming you have the right namespace bound to xhtml:) is the same thing, and it will render correctly in a system that is rendering xhtml (eg firefox or opera, if you are serving it as application/xhtml+xml) However it isn't DTD-valid (because DTD don't know about namespaces) and it won't render on a system like IE which knows nothing about XHTML and just renders the file as HTML by ignoring small syntactic differences like /> empty element syntax, but falling over large syntactic differences like prefixes.

I don't really agree with you here. Though, from an XML perspective, it is the same thing, in XHTML 1.0, it is not. The Recommendation for XHTML 1.0 mandates that strictly conforming documents must conform to the DTD (one of the three: strict, transitional or frameset). Furthermore, there must be a doctype declaration (again, one of three) and the root element must be <html> in the xhtml namespace.

To be both in the xhtml namespace *and* be DTD valid, it follows that the namespace must use the default xmlns.

This limitation is removed in XHTML 2.0 (which is still a draft), where under "conformance" it is explicitly stated that the html may have a prefix, which, then, must be reflected in the DOCTYPE (wondering why there's still a doctype in xhtml 2.0, because there's also a schema, but that is undoubtedly a discussion too far off-topic for this list).

To David Brown: I'm glad that you have found the culprit in your code and that it all works now.

-- Abel Braaksma

Current Thread