[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Escaping the root node when using xsl:copy-of


Subject: RE: [xsl] Escaping the root node when using xsl:copy-of
From: "Kenny Akridge" <kakridge@xxxxxxxxxxxxx>
Date: Wed, 28 Jan 2004 03:07:30 -0500

Are you sure WEATHER_FORECAST is your root node?

match="/*" should only map to the children of your root node.
So WEATHER_FORECAST would not be included if you apply node();


-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Satish
Terala
Sent: Wednesday, January 28, 2004 1:53 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Escaping the root node when using xsl:copy-of

Thanks for the answer but it does'nt quite answer my question.
To make it clear This is my input xml.
<WEATHER_FORECAST>
    <CLOUD>   
      <QUANTITY>
        <AMOUNT>8</AMOUNT>
      </QUANTITY>
    </CLOUD>
    
    <TEMPERATURE>
      <QUANTITY>
        <AMOUNT>-1,7</AMOUNT>
        <UNIT/>
      </QUANTITY>
    </TEMPERATURE>
    <DURATION>
	</START_DATE_TIME>
	</END_DATE_TIME>
    </DURATION>
  </WEATHER_FORECAST>
Am trying to output some thing like this escaping the DURATION element
and the root element tag <WEATHER_FORECAST> element.
<BODY>
   <CLOUD>   
      <QUANTITY>
        <AMOUNT>8</AMOUNT>
      </QUANTITY>
    </CLOUD>
    
    <TEMPERATURE>
      <QUANTITY>
        <AMOUNT>-1,7</AMOUNT>
        <UNIT/>
      </QUANTITY>
    </TEMPERATURE>
<BODY>
Using <xsl:copy-of select="node()[not(self::DURATION)]"/> escapes the
DURATION element , but i get the root <WEATHER_FORECAST> tag. My
question was how do i escape this. 
<xsl:copy-of select="*[not(self::DURATION)]/node() |
node()[not(self::*)]"/> does'nt quite help, it knocks of all the
<TEMPERATURE> , <CLOUD> tags but not the root tag.
thanks
-Satish





-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of
Jarno.Elovirta@xxxxxxxxx
Sent: Wednesday, January 28, 2004 12:01 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Escaping the root node when using xsl:copy-of


Hi,

> Is there any way i can escape the root node (just the element 
> tag) being copied while all the children are copied as is.

  <xsl:template match="/*">
    <xsl:copy-of select="node()"/>
  </xsl:template>

> Currently am using <xsl:copy-of 
> select="node()[not(self::DURATION)]"/> which copies 
> everything except the DURATION child. Problem it also copies 
> the root node which is the node where i start copying.

I'm not sure if this is what you mean,

  <xsl:copy-of select="*[not(self::DURATION)]/node() |
node()[not(self::*)]"/> 

Cheers,

Jarno -  Delerium: Truly (Club)

 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