Subject: RE: [xsl] Mysterious appearance of xmlns="" in output From: "Diamond, Jason" <Jason.Diamond@xxxxxxx> Date: Fri, 8 Mar 2002 13:47:04 -0600 |
The head element in your Header template in in no namespace. Since there's no prefix on it, it has to be in no namespace or the default namespace. And since there's no default namespace in scope (in your stylesheet) for that element, MSXML has to turn off the default namespace when serializing the head element that it turned on with the html element. You have to think of the elements in your stylesheet as being a completely independant XML document form the result document. Just move your default namespace declaration in your stylesheet up to the xsl:stylesheet element and that will make all of the unprefixed elements in your stylesheet be in the same namespace which is probably what you want. Or you could but another default namespace declaration on your head element but that could start to get cumbersome and error prone depending on the size of your transform. Hope this helps, Jason > -----Original Message----- > From: Steve Rosenberry > [mailto:Steve.Rosenberry@xxxxxxxxxxxxxxxxxxxxxxxxx] > Sent: Friday, March 08, 2002 11:30 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Mysterious appearance of xmlns="" in output > > > > 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 > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Get file name without pat, Diamond, Jason | Thread | [xsl] Re: Get file name without pat, Dimitre Novatchev |
[xsl] Mysterious appearance of xmln, Steve Rosenberry | Date | [xsl] Re: Get file name without pat, Dimitre Novatchev |
Month |