Re: TOC

Subject: Re: TOC
From: Graydon Hoare <graydon@xxxxxxxxxxxxx>
Date: Fri, 5 Jun 1998 12:27:58 -0400 (EDT)
> Specifically, I have an SGML document with the following (partial) structure
> 
> 	<RPC>
> 		<INTRO>
> 		<BODY>
> 			<PCAT>
> 				<POS>
> 					...
> 
> Element POS has an attribute list with one attribute and about 10 possible
> values for the attribute. I'd like the table of contents to reference and
> link to each occurence of the attribute values as they appear within the
> document.
> 
> Any help - especially examples - would be greatly appreciated.



This should do something like what you are looking for..
note: you'll have to replace the variables ending in "*" with your
attribute name and attribute values, and I'm assuming your POS elements
have unique ID attributes. If they don't, it's a small task to add them
(let me know and I can give you a little script that'll do it)
You'll also need a properly defined map-constructor as outlined in the
DSSSL spec.


;; generate the TOC from, I guess, the "RPC" level..

(element rpc
  (let* (
    (nodelist-list
      (map
        (lambda (attvalue)
          (select-elements 
            (descendants (current-node))
            (list 'pos (list 'attname* attvalue))))
        '(attval1* attval2* attval3* attval4* attval5*)))

    (hyperlink-maker
      (lambda (node-to-link-to)
        (make sequence
          (make element gi: "a"
                attributes: (list 
                              (list "href" 
                                (string-append "#" 
                                  (id node-to-link-to))))
            (attribute-string "attname*" node-to-link-to))
          (make empty-element gi: "br"))))

    (nodelist-to-hyperlink-list
      (lambda (nl) 
        (map-constructor hyperlink-maker nl))))

  (make-sequence
    (map nodelist-to-hyperlink-list nodelist-list))))



;; now generate the targets

(element pos
  (make element gi: "a"
        attributes: (list (list "name" (id (current-node))))
    (process-children)))



-graydon <graydon@xxxxxxxxxxxxx>


 DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


Current Thread
  • TOC
    • Booher, Craig - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id QAA18448Thu, 4 Jun 1998 16:55:38 -0400 (EDT)
      • G. Ken Holman - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id VAA23359Thu, 4 Jun 1998 21:53:28 -0400 (EDT)
      • Graydon Hoare - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id MAA13639Fri, 5 Jun 1998 12:33:07 -0400 (EDT) <=