xsl-list
[Top] [All Lists]

XSLT processor adds unwanted HTML attributes

2003-02-16 13:52:01
From: Graham Hannington <Ghannington(_at_)csl(_dot_)com>
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: XSLT processor adds unwanted HTML attributes
Date: Sun, 16 Feb 2003 13:22:48 -0000


I'm splitting a single, large XML (well, XHTML) file into multiple files,
breaking at the <h1> elements.

I'm using the following stylesheet:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
version="1.1" >

<xsl:preserve-space elements="*" />

<xsl:output method="xml" />

 <xsl:template match="h1">
  <xsl:variable name="file_name" select="concat(., '.htm')" />
  <xsl:message>Splitting <xsl:copy-of select="$file_name" />
...</xsl:message>
  <xsl:document href="{$file_name}" >
<html>
<xsl:text>&#x0A;</xsl:text>
<head>
<xsl:text>&#x0A;&#x09;</xsl:text>
        <link rel="StyleSheet" href="style/default.css" />
<xsl:text>&#x0A;&#x09;</xsl:text>
        <script src="style/default.vbs" language="VBScript"></script>
<xsl:text>&#x0A;</xsl:text>
</head>
<xsl:text>&#x0A;</xsl:text>
<body>
<xsl:text>&#x0A;</xsl:text>
   <xsl:copy-of select="." />
<xsl:text>&#x0A;</xsl:text>
        <xsl:call-template name="followingElements"/>
<xsl:text>&#x0A;</xsl:text>
</body>
<xsl:text>&#x0A;</xsl:text>
</html>
  </xsl:document>
 </xsl:template>

        <xsl:template name="followingElements">
                <xsl:for-each
select="following-sibling::*[1][not(self::h1)]">
                        <xsl:copy-of select="." />
                        <xsl:text>&#x0A;</xsl:text>
                        <xsl:call-template name="followingElements"/>
                </xsl:for-each>
        </xsl:template>

</xsl:stylesheet>


(I wish I knew a better way to have line breaks than to code all that &#x0A
stuff.  Maybe call a named template each time instead, I guess.  Stuart
Brown: you'll probably recognize some of your code in that followingElements
template... thanks again :-)


Here's the problem (with apologies, I realize this dips into XSLT
processor-specific behaviour):

- MSXSL (the command-line interface to MSXML) appears to not support the
<xsl:document> element.

- Saxon works fine, but - here's the annoying bit - adds colspan and rowspan
attributes to my <td> tags (even though I'm specifying XML as the output
method). I interpret Saxon as doing something "naughty" here, or am I wrong?

How do I stop these well-meaning additions?  (To - hopefully - avoid flames
for discussing processor-specific implementation issues: I don't know for
sure that this is a Saxon-specific thing... it could be that XSLT processors
in general are allowed to do this stuff unless they're told otherwise; I
just don't know how to tell them otherwise ;-)

Graham Hannington

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>