xsl-list
[Top] [All Lists]

RE: extracting preceding nodes with certain exceptions

2003-09-16 20:43:10

Hello all,
  I need some help with the following:
I have (but could be variable):
<tokens>
    <token position="1"/>
    <token position="2"/>
    <token-group>
         <row>
             <token position="3"/>
             <token posistion="4"/>
          </row>
          <row>
              <token position="5"/>
              <token position="6"/>
           </row>
     </token-group>
</tokens>

I would like to sum the values of all preceding nodes of 
<token> #6 that 
are <token>s, but which are not descendants of the preceding 
sibling of 
its ancestor <row>, that is I want to exclude <token>s #3 and 
#4. 

In XPath 2.0 you can write

preceding::token except ancestor::row/preceding-sibling::token

Unfortunately XPath 1.0 has no direct equivalent of the "except"
operator. Some processors offer the EXSLT set:difference() extension
function or an equivalent, or you can do "A except B" by writing the
rather expensive construct:

  A[count(.|B) != count(B)]

Michael Kay


I have sum(ancestor::row//token[(_at_)position &lt; 
$token-position]) where 
in this case $token-position = 6, but that excludes the tokens in 
positions 1 and 2.   I think I am missing something simple here, but 
suggestions are welcome.
thanks in advance,
Matthew L. Avizinis
Gleim Publications, Inc.


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



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



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