xsl-list
[Top] [All Lists]

Re: [xsl] Using variables to get the complement of a node set

2012-02-10 11:20:00
Hi,

Glossing David again,

If you have

<xsl:variable name="alpha" select="A | B | C | D"/>

Keep in mind this will bind $alpha only to the A,B,C and D children of the context (the root if the variable declaration is global).

You can bind to all the A|B|C|D in the document with

<xsl:variable name="alpha" select="//A | //B | //C | //D"/>

On 2/10/2012 6:42 AM, David Carlisle wrote:
<xsl:template match="* except $alpha"/>
no that would be a legal xpath but not a pattern

or
<xsl:template match="*[not $alpha]"/>

no, that's a syntax error so wouldn't run at all

<xsl:template match="*[exists(. except $alpha)]">

will work with the declaration of $alpha given above.

Of course this will tend to be much less efficient than what David suggests:

easiest is

<xsl:template match="*"> the complement

<xsl:template match="A|B|C|D" priority="2"> this one

I've had times when I wanted to parameterize match patterns though.

Cheers,
Wendell

--
======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
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
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>