Subject: [xsl] Mysterious appearance of xmlns="" in output From: Steve Rosenberry <Steve.Rosenberry@xxxxxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 08 Mar 2002 14:30:01 -0500 |
Well hopefully it's only mysterious to me... 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; 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... Thanks. -- Steve Rosenberry Sr. Partner http://BetterGoBids.com -- The Premier Overture (formerly GoTo) Bid Management Tool Electronic Solutions Company -- For the Home of Integration http://ElectronicSolutionsCo.com (610) 670-1710 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] A doubt, Peter Davis | Thread | RE: [xsl] Mysterious appearance of , Julian Reschke |
RE: [xsl] Get file name without pat, Diamond, Jason | Date | RE: [xsl] Mysterious appearance of , Diamond, Jason |
Month |