(module test-xml-pull-2 mzscheme
(require (lib "url.ss" "net")
(lib "inflate.ss")
(lib "pretty.ss")
(lib "port.ss")
(planet "xml-pull.ss" ("dyoo" "xml-pull.plt" 1 0))
(planet "generator.ss" ("dyoo" "generator.plt" 2 0)))
(define (wrap-gunzip original-ip)
(define-values (ip op) (make-pipe 32768))
(thread (lambda () (gunzip-through-ports original-ip op)))
ip)
(define my-url
(string->url "http://archive.godatabase.org/latest-termdb/go_daily-termdb.rdf-xml.gz"))
(define my-input-port (wrap-gunzip (get-pure-port my-url)))
(define my-taffy (start-xml-pull my-input-port))
(define generated-terms (pull-sexps/g my-taffy 'http://www.geneontology.org/dtds/go.dtd#:term))
(let loop ([i 0])
(when (< i 100)
(pretty-print (generator-next generated-terms))
(loop (add1 i))))
(generator-for-each pretty-print generated-terms)
)