xmlns in XHTML

Saqib Ali

Usenet Archive
Joined
Oct 9, 2002
Messages
74
Reaction score
0
Hello All,

I am using Norman Walsh's XSLTs to transform some DocBook XML content to HTML.

However I noticed that Norman Walsh's DocBook XSLT includes the following tag in the transformed document:
<meta xmlns="http://www.w3.org/1999/xhtml" ......

I think the XML Namespace can only be declared in <html/> tag for e.g.:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> is the correct way to declare the namespace.

<meta xmlns="http://www.w3.org/1999/xhtml" ...... is what Norman Walsh's XSLT produced, which I think is incorrect. I might be wrong.

Before I submit a bug-report to OASIS, I just to make sure that I m not missing something. Let me know if I am wrong about xmlns declaration.

Here are some sample documents transformed from DocBook XML to HTML using Norman's XSLTs: http://www.xml-dev.com/blog/#88

Thanks.
Saqib Ali
 

Andy Dingley

Usenet Archive
Joined
Feb 23, 2000
Messages
3,303
Reaction score
0
Before I submit a bug-report to OASIS, I just to make sure that I m not missing something.

Here's a clue - Norman Walsh _really_ knows what he's doing. Many, many people have also used those stylesheets over and over. I'm not saying there are no bugs left, but obvious ones get found quickly.
Let me know if I am wrong about xmlns
declaration.

Yes.
 

Saqib Ali

Usenet Archive
Joined
Oct 9, 2002
Messages
74
Reaction score
0
Let me know if I am wrong about xmlns

Can you please be more specific as to where in the XHTML DTD it allows the xmlns attribute to be in the <META /> TAG ???

I was looking at the XHTML DTD @ http://www.w3.org/TR/xhtml1/#dtds it seems like xmlns attribute is only allowed in the <html /> TAG.

Can you please point me to the exact location in the DTD, which allows xmlns attribute to be in the <meta /> tag.

Thanks.
In Peace,
Saqib Ali
http://validate.sf.net
 

Derek Harmon

Usenet Archive
Joined
Mar 13, 2001
Messages
126
Reaction score
0
Saqib Ali said:
Can you please be more specific as to where in the XHTML DTD it allows the xmlns attribute to be in the <META /> TAG ??? I was looking at the XHTML DTD @ http://www.w3.org/TR/xhtml1/#dtds it seems like xmlns attribute is only allowed in the <html /> TAG.

Observe that the xmlns attribute on the html tag is FIXED. The inference drawn from this is that all the child elements defined by the DTD must belong to the same namespace URI, and no others.

The "XML with Namespaces" recommendation (on which XHTML is based) was created to address this limitation. Inherent in this recommendation is the freedom to declare namespaces anyplace.

The relationship between XHTML and other namespaces is described in section 3.1.2 of the XHTML 1.0 recommendation,

http://www.w3.org/TR/2000/REC-xhtml1-20000126/#well-formed

If you must validate against a DTD, since DTDs are incapable of supporting namespaces, then the XHTML produced by the Doc- Book XSLT is not strictly conforming. This is due to a known limitation of the DTD, rather than incongrueity with the XHTML recommendation.

XHTML 1.1 includes informative XML Schemas, that accomodate the broader use of XML namespace declarations.

Derek Harmon
 

Nick Kew

Usenet Archive
Joined
Jul 21, 2000
Messages
292
Reaction score
0
You may be talking at cross-purposes. XML namespace rules and DTD validation rules are different beasts. XHTML, and particularly XHTML1.0, applies the latter. So <meta xmlns... /> is fine by XML rules but invalid by XHTML rules.

As for whether the stylesheets are in error - I'd have to spend more time than I have now to determine whether the error lies there or in the user. But in reply to Andy's point, Norman Walsh may know what he's doing, but Saqib in no ignorant newbie either.
Observe that the xmlns attribute on the html tag is FIXED. The inference drawn from this is that all the child elements defined by the DTD must belong to the same namespace URI, and no others.

What FIXED means is that it's implied in the <html> element even when an author omits it. It doesn't prevent use of other default namespaces through an xmlns attribute on a child element.
The "XML with Namespaces" recommendation (on which XHTML is based) was created to address this limitation. Inherent in this recommendation is the freedom to declare namespaces anyplace.

The relationship between XHTML and other namespaces is described in section 3.1.2 of the XHTML 1.0 recommendation,

http://www.w3.org/TR/2000/REC-xhtml1-20000126/#well-formed

This is a case of design by committee pulling in different and mutually incompatible directions. The only way this actually works is by defining new DTDs (such as XHTML+MATHML+SVG). Or by dropping both validation and browser-compatibility.
If you must validate against a DTD, since DTDs are incapable of supporting namespaces,

Not strictly true, but we'll skip over that.
then the XHTML produced by the Doc-
Book XSLT is not strictly conforming.

Neither is it valid if it generates xmlns declarations in the manner described here.
XHTML 1.1 includes informative XML Schemas, that accomodate the broader use of XML namespace declarations.

XHTML 1.1 is a true exercise in futility. It gratuitously breaks browser-compatibility, but offers nothing in return, beyond what ad-hoc-XML gives us for free in terms of availability of processing tools.

Conclusion: XML and HTML each has advantages. But mixing them requires attention to detail that is often missing.
 

Andy Dingley

Usenet Archive
Joined
Feb 23, 2000
Messages
3,303
Reaction score
0

Richard Tobin

Usenet Archive
Joined
Jan 6, 2000
Messages
4,251
Reaction score
0
Saqib Ali said:
<meta xmlns="http://www.w3.org/1999/xhtml" ...... is what Norman Walsh's XSLT produced, which I think is incorrect. I might be wrong.

DTDs and namespaces don't work very well together, so it may well be invalid according to the DTD, and you may just want to ignore that fact.

Furthermore there may be some variation between XSLT processors as to what xmlns declarations they output, so it's very hard to guarantee output that matches a DTD.

However, looking at one of your examples, I'm baffled. The top-level <html> element doesn't have an xmlns attribute. The #FIXED declaration in the DTD will give it one when it's read back in again, but the XSLT processor that generated it didn't know that. In fact, it looks as if none of the XSLT output except the meta element was in the XHTML namespace, and that's why it put the xmlns attribute on the meta element.

The first thing I'd do is try using a different XSLT processor.
Then ask Norm.

-- Richard
 

Saqib Ali

Usenet Archive
Joined
Oct 9, 2002
Messages
74
Reaction score
0
The "XML with Namespaces" recommendation (on which XHTML
is based) was created to address this limitation. Inherent in this recommendation is the freedom to declare namespaces anyplace.

The relationship between XHTML and other namespaces is described in section 3.1.2 of the XHTML 1.0 recommendation,

http://www.w3.org/TR/2000/REC-xhtml1-20000126/#well-formed

Derek,
Thank you very much. This is exactly what I was looking for. :)

In Peace,
Saqib Ali
http://validate.sf.net
 

Richard Tobin

Usenet Archive
Joined
Jan 6, 2000
Messages
4,251
Reaction score
0
Nick Kew said:
What FIXED means is that it's implied in the <html> element even when an author omits it.

*And* that the author may not supply any other value, unlike a plain default.

-- Richard
 

Patrick TJ McPhee

Usenet Archive
Joined
Apr 2, 2000
Messages
269
Reaction score
0
% (Saqib Ali) wrote:
%
% > Can you please point me to the exact location in the DTD, which allows % > xmlns attribute to be in the <meta /> tag. % % It's not in the DTD - xmlns is "magic" (it's part of XML, not XHTML), % so look at the XML TR instead

It's magic, but if you want to validate against a DTD, you've got to include the xmlns* attributes, as well as having the prefix consistent between the instance and the DTD.
 

Andy Dingley

Usenet Archive
Joined
Feb 23, 2000
Messages
3,303
Reaction score
0
It's magic, but if you want to validate against a DTD, you've got to include the xmlns* attributes, as well as having the prefix consistent between the instance and the DTD.

Are there any well-known validators that work correctly for XHTML with embedded elements from other namesapces ?

Is there even as yet an agreed notion of what "correct" means in this case ? I know there's a certain lack of clarity(sic) in how close XHTML is to being "vanilla" XML (for reasons of HTML legacyness). It's easy to treat XHTML + (X-foo) as an XML document and validate it as such, but a lot harder to take a "post HTML, App C aware" tool and persuade it that your document is valid.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
548,042
Messages
3,104,224
Members
248,132
Latest member
henrywalsh

Latest Threads

Top