Print

Print


I agree that this is the neatest way to go about it and removes all 
ambiguity.

Liz

Michele Combs wrote:
> Actually the "not (A or B)" construction does seem to work; possibly the
> boolean condition within the parenthesis -- in this case "(A or B)" --
> is evaluated first, and then it applies the "not" ?  In other words, it
> doesn't appear to "not" the two conditions separately, which means that
> "not(A or B)" isn't the same thing as "not(A) or not(B)."  The upshot of
> it is that the "not(A orB)" construction seems to behave more like
> "neither A nor B."
> 
> In any case, an easier (and prettier!) way to solve the problem might
> be to use the choose/ when/otherwise construction, like so:
> 
> <xsl:template match='scopecontent'>
>    <xsl:choose>
>       <xsl:when test='parent::*[@level="series" or
> @level="subseries"]'>
>          <p>THIS IS AN S or SS <xsl:apply-templates/> </p>
>       </xsl:when>
>       <xsl:otherwise>
>          <p>THIS IS NOT AN S or SS <xsl:apply-templates/> </p>
>       </xsl:otherwise>
>    </xsl:choose>
> </xsl:template>
> 
> This targets the exact element (scopecontent) that you want to format
> in a distinct way and doesn't require that pesky "not" at all :)
> 
> Michele C.
> 
> -=--=--=--=--=--=--=--=--=--=--=--=--=--=-
> Michele R. Combs
> [log in to unmask]
> Manuscripts Processor
> Special Collections Research Center
> Syracuse University Library
> 222 Waverly Avenue
> Syracuse, NY 13244
> (315) 443-2697
> -=--=--=--=--=--=--=--=--=--=--=--=--=--=-
> 
>>>> [log in to unmask] 2/6/2007 3:29 PM >>>
> Hi,
> Actually this is a boolean problem...
> Forgive the shorthand - this is about the logic not the actual syntax
> 
> In the first template you ask for series *or* subseries so that means 
> anything that isn't a series or a subseries will be excluded
> 
> In the second template you ask for not(series or subseries) which is 
> different than " not(series) and not(subseries)"
> 
> AN example:
> Of the following items:
> 
> 
> seriesA
> seriesB
> subseriesA
> subseriesB
> fileA
> fileB
> documentA
> documentB
> 
> template1 would retrieve:
> 
> seriesA
> seriesB
> subseriesA
> subseriesB
> 
> 
> But in template2 I assume what you are trying to retrieve is
> fileA
> fileB
> documentA
> documentB
> 
> and any other items that are not a series or a subseries
> 
> But as you have written it not(series or subseries)
> 
> those that are subseries are INCLUDED when you are performing the not()
> 
> on the series but those that are series are INCLUDED when you are 
> performing the not() on  the subseries portion of the statement. That
> is 
> ambiguous because of the *OR* in between.
> 
> If you write it
> not(series) or not(subseries) you still face a similar problem.
> 
> If you write not(series and subseries) then you would be looking for 
> those that had levels that matched both series and subseries. There 
> would be no matches matches. That isn't correct either.
> 
> But if you want to say that you do not want to include series and you
> do 
> not want to include subseries in your results then you should say 
> "not(series) and not(subseries)" (translated into the correct xslt
> syntax).
> 
> Hope that helps.
> 
> Liz
> 
> 
> 
> 
> 
> 
> 
> Lynn Lobash wrote:
>> aha. thank you and for the website.
>>
>> lynn
>>
>>
>>
>>                                                                      
>      
>>              Michele Combs                                           
>      
>>              <[log in to unmask]                                       
>      
>>              >                                                       
>   To 
>>              Sent by: Encoded          [log in to unmask]          
>      
>>              Archival                                                
>   cc 
>>              Description List                                        
>      
>>              <[log in to unmask]>                                        
> Subject 
>>                                        Re: Not statement?            
>      
>>                                                                      
>      
>>              02/06/2007 02:12                                        
>      
>>              PM                                                      
>      
>>                                                                      
>      
>>                                                                      
>      
>>              Please respond to                                       
>      
>>              Encoded Archival                                        
>      
>>              Description List                                        
>      
>>                <[log in to unmask]>                                         
>      
>>                                                                      
>      
>>                                                                      
>      
>>
>>
>>
>> I think possibly the wildcard double slash is confusing it...the
> double
>> slash tells it to find scopecontent anywhere in the document; even
> when
>> you put it in the middle of a string as you have it here, it's still
> an
>> anywhere-in-the-document match (see "Navigating nodes" at
>> http://builder.com.com/5100-6371-1044797-2.html ).  If you take out
>> the double slash, it works fine.  Given that a scopecontent can only
>> appear in a c0# or in another scopecontent, you may not need that
> double
>> slash.
>>
>> Michele
>>
>> -=--=--=--=--=--=--=--=--=--=--=--=--=--=-
>> Michele R. Combs
>> [log in to unmask] 
>> Manuscripts Processor
>> Special Collections Research Center
>> Syracuse University Library
>> 222 Waverly Avenue
>> Syracuse, NY 13244
>> (315) 443-2697
>> -=--=--=--=--=--=--=--=--=--=--=--=--=--=-
>>
>>>>> [log in to unmask] 2/6/2007 1:01 PM >>>
>> I keep getting an ambiguous rule match error here and I am not
>> understanding how these two statements are not opposites:
>>
>> <xsl:template match='* [@level="series" or
>> @level="subseries"]//scopecontent'>
>>
>>             <p>
>>                   <xsl:apply-templates/>
>>             </p>
>> </xsl:template>
>>
>> <xsl:template match='* [not (@level="series" or
>> @level="subseries")]//scopecontent'>
>>
>>             <font size="-1" color="gray">
>>                   <xsl:apply-templates/>
>>             </font>
>> </xsl:template>
>>
>> Thank you,
>> Lynn
>>
>