SSAX upside-down with call/cc and lazy-seq added by Kooda on Fri Dec 2 12:29:06 2016

(use lazy-seq ssax)

(define doc (open-input-file "document.xml"))

(define (ssax->lazy-seq port)
    (lazy-seq
        (call/cc (lambda (extern-cont)
            ((ssax:make-parser
                NEW-LEVEL-SEED
                (lambda (elem-gi attrs . rest)
                    (call/cc
                        (lambda (intern-cont)
                            (extern-cont (cons (list 'NEW-LEVEL-SEED (cdr elem-gi) attrs)
                                          (lazy-seq
                                            (call/cc
                                                (lambda (new-extern-cont)
                                                    (set! extern-cont new-extern-cont)
                                                    (intern-cont #f)))))))))
                FINISH-ELEMENT
                void
                CHAR-DATA-HANDLER
                void) 
              port (void))
            (extern-cont '())))))