[cxml-devel] NIL Name Causing Error in zstream-push

Donavon Keithley keithley at easystreet.com
Thu May 18 02:13:13 UTC 2006


Specifically I'm getting "The value NIL is not of type CXML::STREAM-NAME" in 
the lambda function passed to find-if.  For reference:

(defun zstream-push (new-xstream zstream)
  (cond ((find-if (lambda (x)
                    (and (xstream-p x)
                         (eql (stream-name-entity-name (xstream-name x))
                              (stream-name-entity-name (xstream-name 
new-xstream)))
                         (eql (stream-name-entity-kind (xstream-name x))
                              (stream-name-entity-kind (xstream-name 
new-xstream)))))
                  (zstream-input-stack zstream))
         (wf-error zstream "Infinite recursion.")))
  (push new-xstream (zstream-input-stack zstream))
  zstream)

FWIW, I'm parsing an XML string that looks like this:

<!DOCTYPE request [ 
  <!ENTITY amp "&#38;"> ]>
<document>&</document>

The problem is that the 'x' argument -- which refers to the xstream for the 
entire document -- has no name.  It's NIL.  It was generated via the call 
chain PARSE-ROD > STRING->XSTREAM > MAKE-ROD-XSTREAM.  string->xstream 
doesn't supply a name to make-rod-xstream.

So, should it?  Or should the lambda function be testing for a non-NIL name?  
I'm guessing the latter but I'd rather not guess.

Donavon Keithley



More information about the cxml-devel mailing list