I don't think there's a solution to this, though it's so long since I worked
with Saxon 6.5.5 that I may have forgotten something. I'd suggest moving to
Saxon 8.x and xsl:result-document, which gives you much more control; you're
also on much more secure ground using a standard XSLT 2.0 feature rather
than a vendor extension in a 1.0 product that isn't being developed any
further.
(The issue here is that doctype-system and doctype-public, unlike other
serialization attributes, have no way to specify the default value "absent"
by means of explicit syntax. The problem still exists in 2.0 with
xsl:result-document, but you can avoid it by using named output
definitions).
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Bob Stayton [mailto:bobs(_at_)sagehill(_dot_)net]
Sent: 03 October 2006 01:24
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] saxon:output doctype inherits xsl:output doctype
Perhaps this has come up before, but I couldn't find it in
the archives.
I have an XSL stylesheet that I'm processing with Saxon
6.5.5. It's xsl:output includes doctype-public and
doctype-system to generate XHTML output with a correct
DOCTYPE declaration. In the stylesheet I'm also using the
extension element saxon:output to generate a separate XML
file that is not XHTML, and should actually have no DOCTYPE
declaration because it is intended to be used as a system entity file.
I have found that saxon:output seems to inherit the
doctype-public and doctype-system from the xsl:output
element. If my separate file had its own doctype, I could
override those by specifying the attributes on saxon:output.
But I need to it to have no DOCTYPE. I've tried every
combination I could think of, but I can't turn off the
inherited doctype-public and doctype-system inherited from
the xsl:output element of the stylesheet.
Here is a boiled down stylesheet:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:saxon="http://icl.com/saxon"
extension-element-prefixes="saxon"
exclude-result-prefixes="saxon"
version="1.0">
<xsl:output method="xml" doctype-public="FOO" doctype-system="BAR"/>
<xsl:template match="/*">
<section>
<xsl:apply-templates/>
</section>
<saxon:output href="side.out">
<appendix>
<xsl:apply-templates/>
</appendix>
</saxon:output>
</xsl:template>
</xsl:stylesheet>
With this small sample input file:
<?xml version="1.0"?>
<text>Some text</text>
The main output file has the doctypes from xsl:output:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE section
PUBLIC "FOO" "BAR">
<section>Some text</section>
The side.out output file also has these doctypes:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE appendix
PUBLIC "FOO" "BAR">
<appendix>Some text</appendix>
If I change the stylesheet to use:
<saxon:output href="side.out" doctype-public="" doctype-system="">
Then the side.out contains:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE appendix
PUBLIC "" "">
<appendix>Some text</appendix>
Is there any way to tell saxon:output to not inherit from xsl:output?
Bob Stayton
Sagehill Enterprises
DocBook Consulting
bobs(_at_)sagehill(_dot_)net
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--