chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] ssax examples could not run


From: Peter Bex
Subject: Re: [Chicken-users] ssax examples could not run
Date: Tue, 21 Jun 2011 21:46:56 +0200
User-agent: Mutt/1.4.2.3i

On Tue, Jun 21, 2011 at 01:58:08PM -0400, HP wei wrote:
> I installed chicken.4.7.0
> and ssax, sxpath
> 
> Then I tried to follow the examples pointed to in the ssax homepage
> in
> http://modis.ispras.ru/Lizorkin/sxml-tutorial.html

Generally, the Chicken documentation takes precedence over the
documentation of the upstream project (this goes for all eggs).
In this case, http://wiki.call-cc.org/egg/ssax

> Specifically,
> When I run this in csi,
> (use ssax)
> (use sxpath)
> 
> (sxml:document "http://...html";)
> 
> I got
> Error: unbound variable: sxml:document

Yes, sxml:document isn't part of the SSAX parser itself, but of
the "xlink" sublibrary of sxml-tools.  Chicken's ssax egg packages
up purely the SSAX parser.

Sorry about the confusion, the upstream SSAX project is just a holy mess
of stuff which is split up in a way that's not very orthogonal.

We did our best to try to split it up into chunks that make sense for a
user so you don't have to make a choice to include "everything and the
kitchen sink" whenever you need *some* subfunctionality provided by the
SSAX project.

> Another example, after installing htmlprag
> 
> (*html->sxml* <http://modis.ispras.ru/Lizorkin/Apidoc/htmlprag.html>
> 
>  (open-input-resource "http://....html
> <http://modis.ispras.ru/Lizorkin/XML/amorphis.html>"))
> 
> --> gives
> Error: unbound variable: open-input-resource

This is a very weird one; it doesn't exist _anywhere_ in the SSAX
project:

$ cvs -z3 -d:pserver:address@hidden:/cvsroot/ssax co -P sxml-tools
...
$ cvs -z3 -d:pserver:address@hidden:/cvsroot/ssax co -P SSAX
...
$ grep -r open-input-resource SSAX sxml-tools
sxml-tools/xlink.scm:     (let* ((port (open-input-resource req-uri))
sxml-tools/xlink.scm:     (let* ((port (open-input-resource req-uri))
sxml-tools/xlink.scm:     (let* ((port (open-input-resource req-uri))
sxml-tools/xlink.scm:     (let* ((port (open-input-resource req-uri))

Only usage points, no definition at all!

On Dmitry Lizorkin's website there's this definition:
http://modis.ispras.ru/Lizorkin/Apidoc/access-remote.html#codefunc60351
which links to a "http-transaction" procedure here:
http://modis.ispras.ru/Lizorkin/Apidoc/http.html#codefunc26928

but neither of these exist in the SSAX source tree itself.
It can't really, since SSAX is (mostly) portable Scheme code,
but you can't portably open a network connection (scroll down
on that page to see cond-expand code that makes this available
in a sort-of portable way).

You could copy/paste this code, and it should probably work
unmodified, but read on for a better solution.

> Do I need to use wget in the shell to download the html page
> and then come back to csi to parse it ??

No, you can also use http-client, which provides a procedure which is
similarly high-level as open-input-resource:

(pp (call-with-input-request
     "http://modis.ispras.ru/Lizorkin/XML/poem.xml";
     #f (lambda (p)
          (let ((sxml (ssax:xml->sxml p '())))
            ;; Consume the rest of the stream, ssax does not
            ;; fully read until the end.
            (read-string #f p)
            sxml))))
=>
(*TOP* (*PI* xml "version='1.0'")
       (poem (@ (title "The Lovesong of J. Alfred Prufrock")
                (poet "T. S. Eliot"))
             (stanza
               (line "Let us go then, you and I,")
               (line "When the evening is spread out against the sky")
               (line "Like a patient etherized upon a table:"))
             (stanza
               (line "In the room the women come and go")
               (line "Talking of Michaelangelo."))))

For more information, see http://wiki.call-cc.org/egg/http-client

I hope this helps!

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
"The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music."
                                                        -- Donald Knuth



reply via email to

[Prev in Thread] Current Thread [Next in Thread]