[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] XHTML [WAS: Grouping into a table (for vertical alignment)]


Subject: RE: [xsl] XHTML [WAS: Grouping into a table (for vertical alignment)]
From: "Daniel Joshua" <daniel.joshua@xxxxxxxxxxxx>
Date: Fri, 28 May 2004 14:34:52 +0800

> The result tree output from that XSLT stylesheet is in no-namespace

Well in a later post, I did change my XSL.

> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns="http://www.w3.org/1999/xhtml">

This should give the whole output the XHTML namespace, right?


Regards,
Daniel


-----Original Message-----
From: David Carlisle [mailto:davidc@xxxxxxxxx]
Sent: Thursday, 27 May, 2004 5:25 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] XHTML [WAS: Grouping into a table (for vertical
alignment)]



> I think "must" is too strong a word.

> As long as my HTML is well-formed, it is considered XHTML, right?
No.



> Instead of using a namespace, can I use a DOCTYPE to specify that it is
> XHTML?

It is not really the doctype that makes it xhtml, however the xhtml dtd
does default the namespace declaration attribute so, if you have a
doctype that references the XHTML DTD and that DTD is read by the
parser, the elemets _will_ be in the xhtml namespace.


>  So I can modify my XSL to this:
>
>  <xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"
>  doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
>  doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>

There you are falling into a dark pool between specifications where
unknown monsters lurk.

The result tree output from that XSLT stylesheet is in no-namespace and
so is not xhtml, so for example if you are using an API that passed the
output as some kind of in-memory DOM straight to another XSLT stylesheet
then templates matching XHTML elements would not mach teh elements you
have generated.

However if you serialise the output to a file and then re-parse the
output with an XML parser, the doctype will cause all the elements to be
renamed into the xhtml namespace as described above, and so if you do it
this way and run a second stylesheet, templates matching xhtml elements
will match.

You are much better when generating xhtml with xslt to explictly put it
in the xhtml namespace.
David


Current Thread
Keywords