This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Mysterious appearance of xmlns="" in output
- From: "Julian Reschke" <julian dot reschke at gmx dot de>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Fri, 8 Mar 2002 20:53:46 +0100
- Subject: RE: [xsl] Mysterious appearance of xmlns="" in output
- Reply-to: xsl-list at lists dot mulberrytech dot com
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Steve
> Rosenberry
> Sent: Friday, March 08, 2002 8:30 PM
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] Mysterious appearance of xmlns="" in output
>
>
>
> Well hopefully it's only mysterious to me...
Yep.
> I get extra xmlns="" attributes in different HTML tags in the output
> generated by MSXML4. I've reduced the problem to the following XSLT:
> ---------------------------------------------------
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
>
> <!-- VERY SIMPLE ROOT TEMPLATE MAKES A SINGLE CALL TO Header-->
> <xsl:template match="/">
>
> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
>
> <xsl:call-template name="Header"/>
>
> </html>
>
> </xsl:template>
>
> <!-- HEADER TEMPLATE SIMPLY OUTPUTS A BASIC HTML Head TAGSET-->
> <xsl:template name="Header">
>
> <head>
> <meta http-equiv="Content-Type" content="text/html;
Make this:
<meta xmlns="http://www.w3.org/1999/xhtml" http-equiv="Content-Type"
content="text/html;
> charset=iso-8859-1"/>
> <title>Title</title>
> </head>
>
> </xsl:template>
>
> </xsl:stylesheet>
> ---------------------------------------------------
>
>
> I expected the following output from the transformation:
> ---------------------------------------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
> <head>
> <meta http-equiv="Content-Type"
> content="text/html;
> charset=iso-8859-1" />
> <title>Title</title>
> </head>
> </html>
> ---------------------------------------------------
>
> What I get instead is a 'head' tag that looks like this:
>
> <head xmlns="">
>
> If I replace the <xsl:call-template name="Header"/> with the contents
> >from the Header template, the xmlns attribute is NOT inserted.
>
> If I remove the xmlns="http://www.w3.org/1999/xhtml" attribute from the
> <html> tagset and leave the <xsl:call-template name="Header"/>, the
> xmlns attribute again is NOT inserted.
>
> If I go back to inserting the <head> tagset with a call-template and
> change the Header template to the following (I know it's invalid HTML,
> but for testing purposes I don't believe that should matter):
> ---------------------------------------------------
> <xsl:template name="Header">
>
> <head/>
> <meta http-equiv="Content-Type" content="text/html;
> charset=iso-8859-1"/>
> <title>Title</title>
>
> </xsl:template>
> ---------------------------------------------------
>
> I get three extra xmlns="" attributes as follows:
> ---------------------------------------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
> <head xmlns="" />
> <meta http-equiv="Content-Type"
> content="text/html;
> charset=UTF-8"
> xmlns="" />
> <title xmlns="">Title</title>
> </html>
> ---------------------------------------------------
>
> Does anyone understand this behaviour, and more importantly does anyone
> know how I can turn it off without sacrificing call-templates or the
> xmlns namespace definition? Actually for that matter, I'm not sure what
> the xmlns namespace definition does for me. I added it when I converted
> the website to XHTML just because I blindly copied from an example
> somewhere. If I can sacrifice that without violating any spec, I will,
> although, I'd still like to understand what's happening...
It's just a matter of default namespace scoping. You could also add the
declaration to the stylesheet element (then you wouldn't have to repeat it).
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list