xsl-list
[Top] [All Lists]

Re: CATCH ALL | template rule (2nd try)

2005-05-17 16:39:16
I got it:
(without the node() match below i was getting the extra junk.. now it
is suppressed)
Thanks DIMITRE!  This is a kick ass solution!


<xsl:apply-templates select="fx:node-set($interval)//node()
    [not(count(.|$scenario_a) = count($scenario_a))]
    [not(count(.|$scenario_b) = count($scenario_b))]
    [not(count(.|$scenario_c) = count($scenario_c))]
    [not(count(.|$scenario_d) = count($scenario_d))]
    [not(count(.|$scenario_e) = count($scenario_e))]"
  mode="Exceptions"/>

<xsl:template match="fn:record" mode="Exceptions">
  <xsl:comment>EXCEPTION</xsl:comment>
  <xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="node()" mode="Exceptions"/>



On 5/17/05, Karl Stubsjoen <kstubs(_at_)gmail(_dot_)com> wrote:
becomes:
fx:node-set($interval)[not(count(. | yourExpression) =
count(yourExpression))]

(lose the "whack whack")

On 5/17/05, Karl Stubsjoen <kstubs(_at_)gmail(_dot_)com> wrote:
I figured out the extra junk problem, we were at the wrong context of
$interval on the apply exclusions.  This context is at:  fn:interval,
so I removed the node() from the apply-templates so this:
fx:node-set($interval)//node()[not(count(. | yourExpression) =
count(yourExpression))]

becomes:
fx:node-set($interval)//[not(count(. | yourExpression) =
count(yourExpression))]

Junk is gone.  Does this seem correct, or is "node()" a very important
aspect to this xpath?


On 5/17/05, Karl Stubsjoen <kstubs(_at_)gmail(_dot_)com> wrote:
Ahh Dimitre, quit teasing me with that XSLT 2.0 stuff!

It is working great!  Except... I am getting additional junk.  Not
sure where it is coming from.  Like an apply-templates with no match
and you just get the text of the elements back.  I have set up empty
match templates for my mode of "Exceptions", it helped some, but I'm
still getting back extra junk.  In my "simple example" I am not
getting back the extra junk.  Any ideas?


On 5/17/05, Dimitre Novatchev <dnovatchev(_at_)gmail(_dot_)com> wrote:
On 5/18/05, Karl Stubsjoen <kstubs(_at_)gmail(_dot_)com> wrote:
Okay, I am going to try that!  How about this simpler example
though..., would you mind providing the inverse for this one:

<xsl:template match="A">
<xsl:copy>
 <match>
   <xsl:apply-templates 
select="B[X[(_at_)val=$match_v1]][X[@val=$match_v2]]"/>
 </match>
 <exception>
   <!-- currently, copy of the match above, but would like this to be
expressed as the exception -->
   <xsl:apply-templates 
select="B[X[(_at_)val=$match_v1]][X[@val=$match_v2]]"/>
 </exception>
</xsl:copy>
</xsl:template>

N.P.

This can be done mechanically:

   <xsl:apply-templates 
select="B[X[(_at_)val=$match_v1]][X[@val=$match_v2]]"/>

 <xsl:variable name="x" 
select="B[X[(_at_)val=$match_v1]][X[@val=$match_v2]]"/>

  <xsl:apply-templates select="node()[not(count(.|$x) = count($x))]"/>

Of course, in XPath 2.0 one will use the except operator:

  <xsl:apply-templates select="node() except $x"/>

Cheers,
Dimitre




On 5/17/05, Dimitre Novatchev <dnovatchev(_at_)gmail(_dot_)com> wrote:
<xsl:apply-templates
select="fx:node-set($interval)//fn:interval[//field[(_at_)fieldname='EntityID']=$FTEInterval_Members][//field[(_at_)fieldname='EntityID']=$FTEInterval_JTED_Mains]"
mode="Exceptions" />

What is the inverse of this?  Which would suffice to be my "CATCH
ALL", in otherwords match everything else where the above 
combination
fails.

fx:node-set($interval)//node()[not(count(. | yourExpression) =
count(yourExpression))]

generally, if there are two node-sets: $ns1 and $ns2, their set 
difference
   $ns2 - $ns1
is expressed by this XPath expression:

   $ns2[not(count(. | $ns1) = count($ns1) ) ]

Cheers,
Dimitre

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



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