xsl-list
[Top] [All Lists]

RE: [xsl] XSLT/XPATH 2.0 - except example.

2009-07-22 17:01:33
<xsl:copy-of select="* except X"/>

means "make an exact copy of all the children, except any child selected by
the expression X (which should not be copied at all).

I suspect you are misunderstanding it to mean "copy all the children,
modifying them as you do so to leave out any nodes selected by X".

Clearly that doesn't work: the select expression selects all the children,
then unselects some of them, then xsl:copy-of copies all those that remain.

Regards,

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

 

-----Original Message-----
From: Knight, Michel [mailto:michel(_dot_)knight(_at_)tc(_dot_)gc(_dot_)ca] 
Sent: 22 July 2009 21:45
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XSLT/XPATH 2.0 - except example.

Using Saxon 9
Windows
XSLT/XPATH 2.0

Hi,

I'm trying to remove the h1 from my source with the "except" 
and it doesn't work.
ex:<xsl:copy-of  select="* except
(//xhtml:div[(_at_)class='border']//xhtml:h1)" />

When I do the same logic to class=border section it work?? 
<xsl:copy-of  select="* except(//xhtml:div[(_at_)class='border'])" /> 

What I'm I missing, with the except for the removal of that 
section h1???
Note: source code included.
Regards,

Michel

---------------   My StyleSheet
<xsl:strip-space elements="*"/>
<xsl:template match="xhtml:html" exclude-result-prefixes="xhtml" >

<root>
                      <content>
                              <xsl:apply-templates
select="//xhtml:div[(_at_)class='center']"  
exclude-result-prefixes="xhtml"/>

                      </content>
</root>
</xsl:template>
<!--
==============================================================
=========
-->
<!--*****************************************-->
<!-- Content section just remove the right nav-->
  <xsl:template match ="//xhtml:div[(_at_)class='center']"
exclude-result-prefixes="xhtml">
              <!-- Right Nav first-->
              Remove h1
            <!-- THIS doesn't WORK, why????? -->             
                      <xsl:copy-of  select="* except
(//xhtml:div[(_at_)class='border']//xhtml:h1)" />                             
          END of remove h1
            <!-- THIS WORK -->               
             <xsl:copy-of  select="*
except(//xhtml:div[(_at_)class='border'])" /> 
  </xsl:template>
<!--*****************************************-->
</xsl:stylesheet>

---------------   My Source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ""> 
<html xmlns="http://www.w3.org/1999/xhtml"; lang="en" 
xml:lang="en"> <head> </head> <body> <!--googleoff:all--> 
<div class="page"> <div class="center"> <div class="border"> 
<h1> <a name="cont" id="cont">  Aviation Security </a>  </h1> 
<p>The Government of Canada has committed more than programs 
include the following:</p> </div> </div> </div> </body> </html>


--~------------------------------------------------------------------
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>