(declare-flow-object-class element "UNREGISTERED::James Clark//Flow Object Class::element") (declare-flow-object-class empty-element "UNREGISTERED::James Clark//Flow Object Class::empty-element") (declare-flow-object-class document-type "UNREGISTERED::James Clark//Flow Object Class::document-type") (declare-flow-object-class processing-instruction "UNREGISTERED::James Clark//Flow Object Class::processing-instruction") (declare-flow-object-class entity "UNREGISTERED::James Clark//Flow Object Class::entity") (declare-flow-object-class entity-ref "UNREGISTERED::James Clark//Flow Object Class::entity-ref") (declare-flow-object-class formatting-instruction "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction") (declare-characteristic preserve-sdata? "UNREGISTERED::James Clark//Characteristic::preserve-sdata?" #f) (define %html-public-id% "-//W3C//DTD HTML 3.2 Final//EN") (define generator-version "Generated from Resume 0.0 DTD, resume.dsl version $Revision$") (define (make-group gi) (make element gi: gi (process-children))) (define (make-prefix gi) (make sequence (make empty-element gi: gi) (process-children))) (define (make-literal txt) (make sequence (literal txt) (process-children))) (define (make-literal-group left right) (make sequence (literal left) (process-children) (literal right))) (element RESUME (make sequence (make document-type name: "html" public-id: %html-public-id%) (make formatting-instruction data: "<") (make formatting-instruction data: "!--") (literal generator-version) (make formatting-instruction data: "--> ") (make element gi: "HTML" (make sequence (make element gi: "HEAD" (make sequence (make empty-element gi: "META" attributes: (list (list "name" "generator") (list "content" generator-version))) (make empty-element gi: "META" attributes: (list (list "name" "ObjectType") (list "content" "book"))) (make element gi: "TITLE" (with-mode extract-title-text (process-first-descendant "NAME"))))) (make-group "BODY"))))) (element RELEASE-INFO (make-group "H1")) ; (element PERSONAL-INFO (make-group "ul")) (define (slurp-title wrap-gi descendant body) (make sequence (make element gi: wrap-gi (with-mode extract-title-text (process-first-descendant descendant))) body)) (element PERSONAL-INFO (slurp-title "h1" "NAME" (process-children))) (mode extract-title-text (element (NAME) (process-children))) (element NAME (empty-sosofo)) (element CONTACT (process-children)) (element CATEGORY (process-children)) (element (CATEGORY HEADER) (make-group "H2")) ; (element HEADER (process-children)) (element COMMENT (process-children)) ;(element ENTRY (make-group "ul")) ;(element EMPLOYER (make-prefix "li")) ;(element EMPLOYER-NAME (process-children)) ;(element ENTRY (process-children)) (define (slurp-entry ) ; wrap-gi descendant body (make sequence (make element gi: "table" attributes: (list (list "width" "100%")) (make element gi: "tr" (make element gi: "th" (with-mode extract-title-text (process-first-descendant "employer-name"))))) (make element gi: "table" attributes: (list (list "width" "100%")) (make element gi: "tr" (make sequence (make element gi: "td" attributes: (list (list "align" "left") (list "width" "33%")) (with-mode extract-title-text (process-first-descendant "date"))) (make element gi: "td" attributes: (list (list "align" "center") (list "width" "33%")) (with-mode extract-title-text (process-first-descendant "title"))) (make element gi: "td" attributes: (list (list "align" "right") (list "width" "33%")) (with-mode extract-title-text (process-first-descendant "employer-location"))) ))) (make element gi: "table" attributes: (list (list "width" "100%")) (process-children)) )) (define (slurp-title-entry ) ; wrap-gi descendant body (make sequence (make element gi: "table" attributes: (list (list "width" "100%")) (make element gi: "tr" (make sequence (make element gi: "th" attributes: (list (list "align" "left") (list "width" "50%")) (with-mode extract-title-text (process-first-descendant "title"))) (make element gi: "td" attributes: (list (list "align" "right") (list "width" "50%")) (with-mode extract-title-text (process-first-descendant "date"))) ))) (make element gi: "table" attributes: (list (list "width" "100%")) (make element gi: "tr" (make element gi: "td" (with-mode extract-title-text (process-first-descendant "employer-name"))))) (make element gi: "table" attributes: (list (list "width" "100%")) (process-children)) )) (element ENTRY (if (or (not (attribute-string "state")) (not (string=? (attribute-string "state") "OBSOLETE"))) ;; (slurp-title "h3" "EMPLOYER-NAME" (make-group "ul")) (if (or (not (attribute-string "primary")) (not (string=? (attribute-string "primary") "TITLE"))) (slurp-entry) (slurp-title-entry)) (empty-sosofo))) (mode extract-title-text (element EMPLOYER-NAME (process-children))) (element EMPLOYER-NAME (empty-sosofo)) (mode extract-title-text (element EMPLOYER-LOCATION (process-children))) (element EMPLOYER-LOCATION (empty-sosofo)) (mode extract-title-text (element TITLE (process-children))) (element TITLE (empty-sosofo)) (mode extract-title-text (element DATE (process-children))) (element DATE (empty-sosofo)) (element DEGREE (degreetable)) (define (degreetable) (make element gi: "tr" (make sequence (make element gi: "td" attributes: (list (list "align" "left") (list "width" "50%")) (process-first-descendant "degreename")) (make element gi: "td" attributes: (list (list "align" "right") (list "width" "50%")) (with-mode extract-title-text (process-first-descendant "date")))))) ;; (element TITLE (make-prefix "li")) ;; (element DATE (make-prefix "li")) ;; (element DESCRIPTION (make-prefix "li")) (element DESCRIPTION (if (or (not (attribute-string "state")) (not (string=? (attribute-string "state") "OBSOLETE"))) (make element gi: "tr" (make element gi: "td" attributes: (list (list "colspan" "2")))) (empty-sosofo))) (element PUBREF (process-children)) ;; (element AWARD (make-prefix "li")) (define (tableme) (make element gi: "tr" (make element gi: "td"))) (element AWARD (tableme)) (element PUBLIST (make sequence (make element gi: "h2" (literal "List of Publications")) (process-children))) ;; (make-group "ul"))) ; (element PUBLICATION (process-children)) ; (element (PUBLICATION PUBTITLE) (make-prefix "li")) ; (element PUBTITLE (make-group "strong")) ; (element PUBLICATION (slurp-title "h3" "PUBTITLE" (make-group "ul"))) (define (process-first-joc) (make sequence (process-first-descendant "journal") (process-first-descendant "conference"))) (define (process-authors) (make sequence (literal "Mark Eichin") (with-mode append-coauthor (process-first-descendant "coauthor"))) ) (define (get-pages) (make sequence (with-mode append-pages (process-first-descendant "journal-pages")))) (define (slurp-publication ) (make sequence (process-authors) (literal ", ") (with-mode extract-title-text (process-first-descendant "pubtitle")) (literal ". ") (with-mode extract-title-text (process-first-joc)) (with-mode extract-title-text (get-pages)) (literal ", ") (with-mode extract-title-text (process-first-descendant "date")) (literal ". ") (process-children) (with-mode extract-pub (process-first-descendant "link")) (make empty-element gi: "br" ) )) (element PUBLICATION (slurp-publication)) (mode extract-title-text (element PUBTITLE (process-children))) (element PUBTITLE (empty-sosofo)) ; (element (PUBLICATION DATE) (make-prefix "li")) ;(element JOURNAL (make-prefix "li")) ;(element CONFERENCE (make-prefix "li")) ;(element JOURNAL-PAGES (make-prefix "li")) ;(element COAUTHOR (make-prefix "li")) ;(element PUBNOTES (make-prefix "li")) (define (make-emph x) (make element gi: "em" x)) (mode extract-title-text (element JOURNAL (make-emph (process-children)))) (element JOURNAL (empty-sosofo)) (mode extract-title-text (element CONFERENCE (make-emph (process-children)))) (element CONFERENCE (empty-sosofo)) (mode extract-title-text (element JOURNAL-PAGES (process-children))) (mode append-pages (element JOURNAL-PAGES (make sequence (literal ", ") (process-children)))) (element JOURNAL-PAGES (empty-sosofo)) (mode extract-title-text (element COAUTHOR (process-children))) (mode append-coauthor (element COAUTHOR (make sequence (literal ", ") (process-children)))) (element COAUTHOR (empty-sosofo)) ;; (element COAUTHOR (tableme)) (define (para-me) (make element gi: "p")) (element PUBNOTES (para-me)) (mode extract-pub (element LINK (make sequence (make empty-element gi: "br") (make element gi: "tt" (make element gi: "A" attributes: (list (list "href" (data (current-node)))) (process-children)))))) (element LINK (empty-sosofo)) (element TXTLINK (make element gi: "A" attributes: (list (list "href" (attribute-string "link"))) (process-children))) (element AD-TC (make-group "address")) (element TC.TELNO (process-children)) (element TC.FAXNO (process-children)) (element TC.MOBILE (process-children)) (element TC.VOICE-MAIL (process-children)) (element TC.PAGER (process-children)) (element ADDRESS (process-children)) (element AD.STNUM (make-prefix "br")) (element AD.STNAM (make-literal " ")) (element AD.STTYP (make-literal " ")) (element AD.MBOX (make-literal " ")) (element AD.CITY (make-prefix "br")) (element AD.COUNTY (process-children)) (element AD.ADINFO (make-literal ", ")) (element AD.PCODE (make-literal " ")) (element AD.COUNTRY (process-children)) (element AD.ADDRESS-LINE (process-children)) (element TC (make-prefix "br")) (element TC.INTL-P (make-literal "+")) (element TC.T-SIG (process-children)) (element TC.T-AREA (make-literal-group "(" ")")) (element TC.T-NO (process-children)) (element TC.ELECAD (process-children)) (element TC.TELEX (process-children))