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

# expand-children

## Name

expand-children -- Expand selected nodes in a node list

## Synopsis

    (expand-children nodelist gilist)

## Description

Given a node-list, `expand-children` replaces all of the members of the node-list whose GIs are members of `gilist` with `(children)`.

This function can be used to selectively flatten the hierarchy of a document.

## Example

Suppose that the node list is `(BOOKINFO PREFACE PART APPENDIX)`. `(expand-children nl ("PART"))` might return `(BOOKINFO PREFACE CHAPTER CHAPTER APPENDIX)`.

## Author

Norman Walsh, <ndw@nwalsh.com>

## Source Code

    (define (expand-children nodelist gilist)
      ;; Expand selected nodes in a node list
      (let loop ((nl nodelist) (result (empty-node-list)))
        (if (node-list-empty? nl)
    	result
    	(if (member (gi (node-list-first nl)) gilist)
    	    (loop (node-list-rest nl)
    		  (node-list result (children (node-list-first nl))))
    	    (loop (node-list-rest nl)
    		  (node-list result (node-list-first nl)))))))

Prev | Home | Next
descendant-of? | Up | directory-depth