DSSSL Library Reference: Part of the Modular DocBook Stylesheet distribution
Prev |  | Next

# component-list-descendant-node-list

## Name

component-list-descendant-node-list -- Find all elements of a list of elements in a component

## Synopsis

    (component-list-descendant-node-list inputnd inputlist complist)

## Description

Finds the first ancestor of `inputnd` in `complist` and then returns a list of all the elements in `inputlist` within that component.

WARNING: this requires walking over *all* the descendants of the ancestor node. This may be *slow*.

## Author

Norman Walsh, <ndw@nwalsh.com>

## Source Code

    (define (component-list-descendant-node-list inputnd inputlist complist)
      ;; Find all elements of a list of elements in a component
      (let ((nd (ancestor-member inputnd complist)))
        (let loop ((nl (descendants nd)) (result (empty-node-list)))
          (if (node-list-empty? nl)
    	  result
    	  (if (member (gi (node-list-first nl)) inputlist)
    	      (loop (node-list-rest nl)
    		    (node-list result (node-list-first nl)))
    	      (loop (node-list-rest nl)
    		    result))))))

Prev | Home | Next
component-child-number | Up | component-list-child-number