Subject: RE: Counting Nodes From: "Maltby, David G" <david.g.maltby@xxxxxxxx> Date: Fri, 25 Feb 2000 10:42:52 -0500 |
With Brandon's theory that non-element class nodes were being included in the node-list returned by (siblings) proven correct, I have rewritten my procedure to trap those nodes and not count them. This procedure provides the functionality I need. (define (text-node-cnt #!optional (cur-text-node (current-node))) (let loop ( (text-siblings (siblings cur-text-node)) (cnt 0) ) (cond ((node-list-empty? text-siblings) cnt) ((node-list=? cur-text-node (node-list-first text-siblings)) (+ cnt 1)) ;exit ((not (gi (node-list-first text-siblings))) (loop (node-list-rest text-siblings) cnt)) ;don't count it ((has-attribute? (normalize "type") (node-list-first text-siblings)) (loop (node-list-rest text-siblings) cnt)) ;don't count it (else (loop (node-list-rest text-siblings) (+ cnt 1)))))) ;count it Is there are better or more appropriate element class test of the node then (gi)? Is there efficiencies to be gained by naming (node-list-first text-siblings) rather then doing the (node-list-first ) call three times? I tested Matthias' elegant procedure: (define (text-node-cnt #!optional (cur-text-node (current-node))) (node-list-length (node-list-filter (lambda (snl) (not (attribute-string "type" snl))) (preced cur-text-node)))) and it works as well as my first attempt (well, it's one off but that is minor), however it is too elegant for me and I could not successfully modify the filter to get rid of the (not (gi snl)) as well as the (not (attribute-string "type" snl)). It will be a good exercise for me when deadlines are not so pressing. I need to understand mapping a procedure over a list better. BTW, has anyone seen a tutorial or paper on modes? I understand enough to know that they are a good thing, but I don't understand enough to use them effectively. Regards, David DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: Counting Nodes, Maltby, David G | Thread | Re: Counting Nodes, Matthias Clasen |
Re: Emulation of XSL's id() in DSSS, Ralf Kempkens | Date | Re: Emulation of XSL's id() in DSSS, Norman Walsh |
Month |