Subject: Re: Understanding Identity Transformations
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Mon, 14 Feb 2005 13:06:40 -0700
|
Ya, but than you lose the top level element and in essence you end up
with no match at all. (I think)
On Mon, 14 Feb 2005 13:53:34 -0600, JBryant@xxxxxxxxx <JBryant@xxxxxxxxx> wrote:
> If I understand correctly, you want all nodes that have a cat attribute
> but not when the cat attribute has a value of BLUE?
>
> In that case:
>
> <xsl:template match="*[@cat][not(@cat='BLUE')]"/>
>
> or
>
> <xsl:template match="*[@cat and not(@cat='BLUE')]"/>
>
> Jay Bryant
> Bryant Communication Services
> (presently consulting at Synergistic Solution Technologies)
>
>
> Karl Stubsjoen <kstubs@xxxxxxxxx>
> 02/14/2005 01:35 PM
> Please respond to
> xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>
> To
> xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> cc
>
> Subject
> Re: Understanding Identity Transformations
>
>
> [FOLLOW UP]
>
> I get it!
>
> This:
> <xsl:template match="*[@cat!='BLUE']" />
>
> Will match all nodes where the cat attribute is not equal to 'BLUE'
> and... all nodes which do not have a cat attribute!!!
>
> Really what I want is:
> <xsl:template match="FOO[not(@cat='BLUE')]" />
>
> Which will match all nodes where the cat attribute is not equal to
> 'BLUE' and... here is the important pars... and match only FOO element
> who have a cat attribute!
>
> Errr.... but couldn't get the first example to work until I
> distinguished that the element FOO is the one I was interested in
> matching. Hmmmm.... I will feel triumphant when I can rewrite this
> with *[not(...)] rather than FOO[not(...)]. I guess the problem is
> that the top level node was not being matched. So how to avoid
> colliding with the top level node in this case where there is no cat
> attribute?
>
> Karl
>
> On Mon, 14 Feb 2005 12:14:01 -0700, Karl Stubsjoen <kstubs@xxxxxxxxx>
> wrote:
> > Ok.. .the following is working great, but I am using != operand. How
> > do you write the below match using not() and achieve same results?
> >
> > <xsl:template match="@* | node()">
> > <xsl:copy>
> > <xsl:apply-templates select="@*"/>
> > <xsl:apply-templates />
> > </xsl:copy>
> > </xsl:template>
> >
> > <xsl:template match="*[@cat!='BLUE']" />
|