xsl-list
[Top] [All Lists]

Re: not(not() and not())

2002-11-16 23:37:20
Gustaf Liljegren <gustafl(_at_)algonet(_dot_)se> wrote:
I seem to have a problem with logic.

I agree.  This is a logic problem, not some esoteric behavior of XSLT.


<!-- Paint border unless it's the last row in the last rowgroup. -->
<xsl:if test="not(not(parent::tr/following-sibling::tr) and
              not(ancestor::tbody/following-sibling::tbody))">
  <xsl:call-template name="draw-border-bottom"/>
</xsl:if>

is not exactly the same as this:

<!-- Paint border unless it's the last row in the last rowgroup. -->
<xsl:if test="parent::tr/following-sibling::tr and
              ancestor::tbody/following-sibling::tbody">
  <xsl:call-template name="draw-border-bottom"/>
</xsl:if>

The first gives the correct result, but the second paints borders only on
all but the last rowgroup. Shouldn't "... and ..." always be the same as
"not(not(...) and not(...))"? If not, is it a better way to write the above?

The logic principle that applies here is commonly referred to as "DeMorgan's
Law".  Using your notation, DeMorgan's Law states that "... and ..." is always
the same as "not(not(...) or not(...)).  That is not the usual formulation
though; the usual forulation reads like this:  for any boolean-valued
expressions A and B, "not(A and B)  =  not(A) or not(B)".  Applying a not()
operation to both sides of the equation leads to the formulation that directly
answers your question

So, in other words, if you want to negate an logical expression of "ANDed"
terms, you can do it by negating the individual terms *AND* changing the "ANDs"
to "ORs".


=====
-- Roger Glover

   "Have you ever noticed, it's 'a penny for your thoughts',
    but you put in your 'two cents worth'?....
    Somebody somewhere is making a penny."
            - Steven Wright

__________________________________________________
Do you Yahoo!?
Yahoo! Web Hosting - Let the expert host your site
http://webhosting.yahoo.com

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



<Prev in Thread] Current Thread [Next in Thread>