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

Re: [xsl] Value-of, copy-of


Subject: Re: [xsl] Value-of, copy-of
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Wed, 27 Feb 2002 17:39:32 -0500

Mike,

Ah, the reason this is tricky is ... it's tricky.

If your context node is the C1001 (that is, you're in a template matching the C1001), then you want all children except the C1007 and C1011 children.

That would be:

<xsl:copy-of select="node()[not(self::C1007) and not(self::C1011)]"/>

This translates as "copy all child nodes that are not themselves C1001 nodes and not C1011 nodes, either".

This actually works out to be the same as

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

The reason for this is that the expression (self::C1007|self::C1011) tests as true for any C1007 or C1011 node, but false for any other. That's because those two are the only kinds of nodes from which the union of these two XPath expressions (which both traverse the self:: axis), returns a node-set with any node in it.

But that may be more than you wanted to know. :-)

Cheers,
Wendell

At 05:21 PM 2/27/2002, you wrote:
Wendell,
thanks for your patience. Here is a sample (attributes removed for
simplicity):

XML:
<SHOW>
<C1001>
<TITLE>I Picked a Daisy</TITLE> (ca. <UNITDATE>1960</UNITDATE>)
unproduced, lyrics by <PERSNAME>Alan Jay Lerner</PERSNAME>

<C1007>Note:  the collaboration between Rodgers and
<PERSNAME>Lerner</PERSNAME> was terminated, Lerner subsequently
completed the show with <PERSNAME>Burton Lane</PERSNAME> and it
became <TITLE>On a Clear Day You Can See Forever</TITLE>.</C1007>

<C1011>see  [Sketches for I Married an Angel]</C1011>
</C1001>
</SHOW>

I want this:

<TITLE>I Picked a Daisy</TITLE> (ca. <UNITDATE>1960</UNITDATE>)
unproduced, lyrics by <PERSNAME>Alan Jay Lerner</PERSNAME>

Thanks,
Mike F.

--- Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote:
> Mike F.:
>
> At 04:00 PM 2/27/2002, you wrote:
> >I would like to exclude some elements from my copy-of output. I am
> >trying to use a template with xsl:copy but I am still not finding
> the
> >correct syntax for not().
> >
> ><xsl:copy-of select="C1001/node()[not(child::C1007) and
> >not(child::C1010)]"/>
>
> This translates into English as "copy all nodes that are children
> of my
> C1001 children but that do not have C1007 children and do not have
> C1010
> children of their own".
>
> To be more explicit, I'm afraid we need to see a snippet of your
> source XML
> again, with a specification of which nodes you want to copy and
> which ones
> you don't. (Tell us in the natural language of your choice, and
> there's
> probably someone around who can translate it back into XPath.)
>
> But the ultimate solution to your problem is to master XPath. 'and'
> and
> 'or' operators, the not() function, etc., are all part of XPath.
>
> Cheers,
> Wendell
>
>
>
======================================================================
> Wendell Piez
> mailto:wapiez@xxxxxxxxxxxxxxxx
> Mulberry Technologies, Inc.
> http://www.mulberrytech.com
> 17 West Jefferson Street                    Direct Phone:
> 301/315-9635
> Suite 207                                          Phone:
> 301/315-9631
> Rockville, MD  20850                                 Fax:
> 301/315-8285
>
----------------------------------------------------------------------
>    Mulberry Technologies: A Consultancy Specializing in SGML and
> XML
>
======================================================================
>
>
>  XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>


__________________________________________________ Do You Yahoo!? Yahoo! Greetings - Send FREE e-cards for every occasion! http://greetings.yahoo.com

XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list




Current Thread
Keywords