SGML/XML Kit - Default SGML/XML browser display
Date: Wed, 17 Feb 1999 12:32:00 -0500 From: Didier PH Martin <martind@netfolder.com> To: DSSSL mailing list <DSSSList@mulberrytech.com> Subject: Default SGML/XML browser display
HI,
With the help of David Pawson (who gave me the right hint) I debugged the dsssl script that displays the SGML/XML document.
The following script displays a SGML/XML document showing its structure with indentation. In the next SGML/XML kit, I'll include it to display a SGML or XML document by default if no style sheet is associated to the document. Until then, here is the script. If you have the latest SGML/XML kit just include the following PI in your SGML/XML document.
[Note: see the February 1999 announcement for the SGML/XML kit.]
SGML: <?stylesheet href="default.dsl" type="text/dsssl" media="screen"> XML: <?xml-stylesheet href="default.dsl" type="text/dsssl" media="screen"?>
Note: I gave it the name "default.dsl" to this script, you may change it to the name you want.
If you have any suggestion to improve it, don't hesitate, make a post.
dsssl Script:
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN"> (define *rgb-color-space* (color-space "ISO/IEC 10179:1996//Color-Space Family::Device RGB")) (define primary-blue-color (color *rgb-color-space* (/ 25 255) (/ 25 255) (/ 255 255))) (define %single-indent% 20pt) (define (copy-attributes nd indent) (let loop ((atts (named-node-list-names (attributes nd))) (resultstr "")) (if (null? atts) resultstr (loop (cdr atts) (let* ((name (car atts)) (value (attribute-string name nd))) (if value (string-append resultstr "&#RE;" indent name "=\"" value "\"") resultstr)))))) (define (ancestors nl) (node-list-map (lambda (snl) (let loop ((cur (parent snl)) (result (empty-node-list))) (if (node-list-empty? cur) result (loop (parent cur) (node-list cur result))))) nl)) (root (make scroll (process-children))) (default (sosofo-append (make paragraph color: primary-blue-color start-indent: (* (node-list-length(ancestors(current-node))) %single-indent%) (literal "<" (gi (current-node)) (copy-attributes (current-node) (string-append " ")) ">")) (make paragraph lines: 'asis start-indent: (* (node-list-length(ancestors(current-node))) %single-indent%) (process-children)) (if (node-property 'must-omit-end-tag? (current-node)) (empty-sosofo) (make paragraph color: primary-blue-color start-indent: (* (node-list-length(ancestors(current-node))) %single-indent%) (literal "</" (gi (current-node)) ">")))))
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
Prepared by Robin Cover for the The SGML/XML Web Page archive.