RE: AW: [xsl] exclude result prefixes doesn't stop prefix from showingup.

Subject: RE: AW: [xsl] exclude result prefixes doesn't stop prefix from showingup.
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 22 Aug 2003 19:06:33 +0100
> 
> Thanks for the idea, but it didn't change the behavior, the 
> result still 
> looks like this:
> 
> <?xml version="1.0" encoding="utf-8"?>
> <codeBook xmlns="http://www.icpsr.umich.edu/DDI";>
>     <docDscr xmlns:ddi="http://www.icpsr.umich.edu/DDI";>
>         <citation>
>             <titlStmt>...

Now you do have a namespace declaration in the result which is not being
used, and is only there because it was in scope for the literal result
element that created it. This *is* the situation where
exclude-result-prefixes works.

Michael Kay


> 
> Markus Abt wrote:
> 
> > Mark,
> > try to put the namespace node at the root element of the result,
> > not at xsl:stylesheet:
> > 
> > <?xml version="1.0" encoding="iso-8859-1"?>
> > <xsl:stylesheet
> > 	version="1.0"
> > 	xmlns:ddi="http://www.icpsr.umich.edu/DDI";
> > 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> > 	>
> > 	<xsl:template match="ddi:codeBook">
> > 	   <xsl:copy xmlns="http://www.icpsr.umich.edu/DDI";>
> > 	     <xsl:apply-templates select="@*"/>
> > 		<docDscr>
> > 		   <citation>
> > 			<titlStmt>
> > 			   <titl>
> > 			     <xsl:value-of 
> select="ddi:stdyDscr/ddi:citation/ddi:titlStmt/ddi:titl"/>
> > 			   </titl>
> > 			</titlStmt>
> > 		    </citation>
> > 	         </docDscr>	
> > 		 <xsl:apply-templates select="*"/>
> > 		</xsl:copy>
> > 	</xsl:template>
> > </xsl:stylesheet>
> > 
> > 
> > Regards,
> > Markus
> > __________________________
> > Markus Abt
> > Comet Computer GmbH
> > http://www.comet.de
> > 
> > 
> > 
> > ----------
> > Von: 	Mark R. Diggory
> > Gesendet: 	Freitag, 22. August 2003 17:33
> > An: 	xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Betreff: 	Re: [xsl] exclude result prefixes doesn't stop 
> prefix from showingup.
> > 
> > I did see that particular Q/A in the XSL FAQ and in your 
> book, I agree
> > it works, but I feel like its a bit of an overkill
> > 
> > Initially I had tried to write the stylesheet using the DDI 
> namespace 
> > as
> > the default namespace, like below. but this failed to 
> detect the default 
> > namespace in the source document so none of the source 
> elements were 
> > properly matched. I thought to myself, there should be some 
> way I can 
> > match the default namespace in the source document? But I 
> can't find 
> > anything that does this. I came across the #default entity, 
> but this 
> > doesn't seem to fit either.
> > 
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet
> >      version="1.0"
> >      xmlns="http://www.icpsr.umich.edu/DDI";
> >      xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> >      exclude-result-prefixes="ddi"
> >      >
> >      <xsl:template match="codeBook">
> >         <xsl:copy>
> >           <xsl:apply-templates select="@*"/>
> >          <docDscr>
> >             ...
> >                 <titl>
> >                   <xsl:value-of 
> select="stdyDscr/citation/titlStmt/titl"/>
> >                 </titl>
> >             ...
> >           </docDscr>
> >           <xsl:apply-templates select="*"/>
> >          </xsl:copy>
> >      </xsl:template>
> > 
> >      ...
> > </xsl:stylesheet>
> > 
> > Michael Kay wrote:
> > 
> >>exclude-result-prefixes only affects the namespaces copied from the 
> >>stylesheet by a literal result element, it doesn't affect 
> copying of 
> >>namespaces from source documents. In any case, the codeBook 
> element is 
> >>in the namespace http://www.icpsr.umich.edu/DDI, so the 
> namespace must 
> >>be declared. exclude-result-prefixes only suppresses 
> namespaces that 
> >>are not used in any element or attribute name, and this 
> namespace is 
> >>used. What you want to do is not to suppress the namespace 
> >>declaration, it is to change the name of the element, which 
> you can do 
> >>by using <xsl:element name="{local-name(.)}"> in place of xsl:copy.
> >>
> >>Michael Kay
> >>
> >>
> >>
> >>>-----Original Message-----
> >>>From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >>>[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> >>>Mark R. Diggory
> >>>Sent: 21 August 2003 23:10
> >>>To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >>>Subject: [xsl] exclude result prefixes doesn't stop prefix 
> >>
> >>>from showing up.
> >>
> >>>
> >>>I have a stylesheet that copies an xml document with a
> >>>default namespace 
> >>>while it also is adding some content to it:
> >>>
> >>>*The stylesheet*
> >>>
> >>><?xml version="1.0" encoding="UTF-8"?>
> >>><xsl:stylesheet
> >>>	version="1.0"
> >>>	xmlns="http://www.icpsr.umich.edu/DDI";
> >>>	xmlns:ddi="http://www.icpsr.umich.edu/DDI";
> >>>	xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> >>>	exclude-result-prefixes="ddi"
> >>>	>
> >>>
> >>>	<xsl:template match="@* | *">
> >>>		<xsl:copy>
> >>>			<xsl:apply-templates select="* | @* | text()"/>
> >>>		</xsl:copy>
> >>>	</xsl:template>
> >>>	
> >>>	<xsl:template match="ddi:codeBook">
> >>>	   <xsl:copy>
> >>>	     <xsl:apply-templates select="@*"/>
> >>>		<docDscr>
> >>>		   <citation>
> >>>			<titlStmt>
> >>>			   <titl>
> >>>			     <xsl:value-of
> >>>select="ddi:stdyDscr/ddi:citation/ddi:titlStmt/ddi:titl"/>
> >>>			   </titl>
> >>>			</titlStmt>
> >>>		    </citation>
> >>>	         </docDscr>		
> >>>		 <xsl:apply-templates select="*"/>
> >>>		</xsl:copy>
> >>>	</xsl:template>
> >>></xsl:stylesheet>
> >>>
> >>>*The xml document*
> >>>
> >>><?xml version="1.0" encoding="utf-8"?>
> >>><codeBook xmlns="http://www.icpsr.umich.edu/DDI"; >
> >>>	<stdyDscr> ....
> >>>
> >>>
> >>>*the resulting xml document*
> >>>
> >>>
> >>><?xml version="1.0" encoding="utf-8"?>
> >>><codeBook xmlns="http://www.icpsr.umich.edu/DDI";>
> >>>	<docDscr xmlns:ddi="http://www.icpsr.umich.edu/DDI";>
> >>>		<citation>
> >>>			...
> >>>		</citation>
> >>>	</docDscr>
> >>>	<stdyDscr>
> >>>		<citation>
> >>>			<titlStmt>
> >>>				<titl>Foo bar</titl>
> >>>			</titlStmt>
> >>>		</citation>
> >>>	</stdyDscr>
> >>></codeBook>
> >>>
> >>>My problem is that I'm getting an extra
> >>>xmlns:ddi="http://www.icpsr.umich.edu/DDI"; in the docDscr 
> >>>element even 
> >>>though I'm suppressing it in the excludes. Is there any way I 
> >>>can stop 
> >>>this from happening?
> >>>
> >>>-Mark Diggory
> >>>Harvard MIT Data Center
> >>>
> >>>
> >>>
> >>>XSL-List info and archive:  
> http://www.mulberrytech.com/xsl/xsl-list
> >>>
> >>
> >>
> >>
> >> 
> XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> >>
> > 
> > 
> > 
> >  XSL-List info and archive:  
> http://www.mulberrytech.com/xsl/xsl-list
> > 
> > 
> > 
> >  XSL-List 
> info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> > 
> 
> 
>  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