This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
Bug fix submission for contrib/imagemap/imagemap.dsl
- To: <dave dot pawson at virgin dot net>, <docbook-apps at lists dot oasis-open dot org>
- Subject: DOCBOOK-APPS: Bug fix submission for contrib/imagemap/imagemap.dsl
- From: Karl Critz <kcritz at mathworks dot com>
- Date: Wed, 24 May 2000 16:39:39 -0400
- References: <14632.64077.599382.669393@moorgate.inpharmatica.co.uk>
This fix to imagemap.dsl fixes the existing warning for when
an area's linkend does not exist.
line added to make-html-area:
(if (node-list-empty? target) (process-children)
This prevents the stylesheet from trying to create an invalid
<area> element.
Norm - could you please add this fix to the next release of the
DocBook stylesheets?
-karl
=======================================
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!ENTITY docbook.dsl PUBLIC "-//Norman Walsh//DOCUMENT DocBook HTML
Stylesheet//EN" CDATA DSSSL>
]>
<style-sheet>
<style-specification id="docbook-plain" use="docbook">
<style-specification-body>
(element (graphicco areaspec)
(make element gi: "MAP"
attributes: (list (list "NAME" (element-id)))
(let loop ((nl (select-elements (descendants (current-node))
(normalize "area"))))
(if (node-list-empty? nl)
(empty-sosofo)
(make sequence
(make-html-area (node-list-first nl))
(loop (node-list-rest nl)))))))
(define ($graphic$ fileref
#!optional (format #f) (alt #f) (align #f))
(let* ((csim? (equal? (gi (parent (current-node)))
(normalize "graphicco")))
(ismap (if csim?
'(("ISMAP" "ISMAP"))
'()))
(usemap (if csim?
(let* ((graphicco (parent (current-node)))
(areaspec (select-elements
(children graphicco)
(normalize "areaspec"))))
(list (list "USEMAP"
(string-append "#"
(attribute-string
(normalize "id")
areaspec)))))
'()))
(border (if csim? '(("BORDER" "0")) '()))
(img-attr (append
(list (list "SRC" (graphic-file fileref)))
(if align (list (list "ALIGN" align)) '())
(if image-library (graphic-attrs fileref alt) '())
ismap
usemap
border)))
(make empty-element gi: "IMG"
attributes: img-attr)))
(define (make-html-area area)
(let* ((shape (attribute-string (normalize "otherunits") area))
(coords (attribute-string (normalize "coords") area))
(idrefs (attribute-string (normalize "linkends") area))
(idlist (if idrefs
(split idrefs)
'()))
(target (if idrefs
(element-with-id (car idlist))
(empty-node-list)))
(href (attribute-string (normalize "label") area)))
(if (node-list-empty? target) (process-children)
(if idrefs
(make empty-element gi: "AREA"
attributes: (list (list "SHAPE" shape)
(list "COORDS" coords)
(list "HREF" (href-to target))))
(make empty-element gi: "AREA"
attributes: (list (list "SHAPE" shape)
(list "COORDS" coords)
(list "HREF" href)))))))
</style-specification-body>
</style-specification>
<external-specification id="docbook" document="docbook.dsl">
</style-sheet>