xsl-list
[Top] [All Lists]

RE: Unwanted namespace after using COPY-OF

2005-01-08 16:00:24
xsl:copy-of copies a complete subtree, unchanged, including all its
namespaces.

exclude-result-prefixes only affects the behavior of literal result elements
in the stylesheets, it has no effect on xsl:copy-of.

XSLT 2.0 allows you to suppress namespaces by means of a new attribute on
xsl:copy-of (copy-namespaces="yes|no")

In XSLT 1.0, if you want to copy everything except namespaces you need:

<xsl:template match="*">
  <xsl:element name="{name()}" namespace="{namespace-uri()}">
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: gerritjan [mailto:gerritjankoekkoek(_at_)mac(_dot_)com] 
Sent: 08 January 2005 21:12
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Unwanted namespace after using COPY-OF

Newbe question?
This is my XSLT:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        exclude-result-prefixes="xsi"
     >
   <xsl:output method = "xml" indent = "yes" />

   <xsl:template match="/" >
     <onderwerpen>
        <xsl:apply-templates select="onderwerp">
     </onderwerpen>
   </xsl:template>

   <xsl:template match="onderwerp" >
     <xsl:variable name="v_titel"><xsl:value-of 
select="@titel"/></xsl:variable>
     <xsl:variable name="v_datum"><xsl:value-of 
select="@datum"/></xsl:variable>
     <xsl:variable name="v_datum_einde"><xsl:value-of 
select="@datum_einde"/></xsl:variable>
     <xsl:variable name="v_menu"><xsl:value-of 
select="@menu"/></xsl:variable>
     <xsl:variable name="v_submenu"><xsl:value-of 
select="@sub_menu"/></xsl:variable>
     <xsl:variable name="v_beveiliging"><xsl:value-of 
select="@beveiliging"/></xsl:variable>
      <onderwerp titel="{$v_titel}" datum="{$v_datum}" 
datum_einde="{$v_datum_einde}" menu="{$v_menu}" 
submenu="{$v_submenu}" 
beveiliging="{$v_beveiliging}" >
                              <xsl:copy-of select="subtitel"/>
                              <xsl:copy-of select="kenwoorden"/>
                              <xsl:copy-of 
select="over_cdls_persoon"/>
                              <xsl:copy-of select="inleidingtekst"/>
                              <xsl:copy-of select="onderwerptekst"/>
                              <xsl:copy-of select="auteur"/>
                              <xsl:copy-of select="bron"/>
      </onderwerp>
   </xsl:template>

</xsl:stylesheet>

The result contains:
<kenwoorden xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
<inleidingtekst xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>

It looks like using <XSL:COPY-OF...> is adding this 
namespacestatement, 
I did not intend this "xmlns:xsi..." to be added!
I try to suppress it by the 2 lines added to the:
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        exclude-result-prefixes="xsi">

This does not help?
Any suggestions?

Gerritjan Koekkoek


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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