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* (
        (lambda (attvalue)
            (descendants (current-node))
            (list 'pos (list 'attname* attvalue))))
        '(attval1* attval2* attval3* attval4* attval5*)))

      (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"))))

      (lambda (nl) 
        (map-constructor hyperlink-maker nl))))

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

;; now generate the targets

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

-graydon <graydon@xxxxxxxxxxxxx>

 DSSSList info and archive:

Current Thread
  • TOC
    • Booher, Craig - from mail1.ability.netby (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 (8.8.5/8.6.12) with ESMTP id VAA23359Thu, 4 Jun 1998 21:53:28 -0400 (EDT)
      • Graydon Hoare - from mail1.ability.netby (8.8.5/8.6.12) with ESMTP id MAA13639Fri, 5 Jun 1998 12:33:07 -0400 (EDT) <=