Hi,
I have created two XSLs, one which is with a DOCTYPE for HTML
4.01, the
other for XHTML Basic. These XSLs are exactly the same,
except for these
parts of my XSL:
HTML 4.01
---------
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html4/loose.dtd"
encoding="iso-8859-1"
indent="yes"/>
...and
XHTML 1.0
---------
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html="http://www.w3.org/1999/xhtml">
<xsl:output method="xml"
doctype-public="-//W3C//DTD XHTML Basic 1.0//EN"
doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"
encoding="iso-8859-1"
indent="yes"
omit-xml-declaration="yes"/>
Does someone know an easy way in which I could have two
files, one with
the HTML 4.01 header and one with the XHTML 1.0 header, and I could
reuse them whenever I wanted by calling them in XSLs when needed. For
example, could I just do an include of these headers rather
than having
to copy them in each file?
Well, 1) you could have a third stylesheet that does that actual work,
generates a document in XHTML namespace. Then you reprocess the results with a
stylesheet for XHTML that's just an identity transformation that adds a
doctype, or with a stylesheet for HTML that's an identity transformation that
copies all elements into null-namespace and adds a doctype. Or 2) your
stylesheet that does all the work generates all elements using <xsl:element
name="whatever" namespace="{$target-NS}"> and in the stylesheet for HTML or
XHTML where you import the workhorse stylesheet you define $target-NS as either
"" or "http://www.w3.org/1999/xhtml", respectively.
There are probably other and better strategies you could use described in XSLT
books; don't remember if Jeni wrote about a situation like this.
Cheers,
Jarno - In Strict Confidence: Zauberschloss
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list