Я получил ошибку использования "print-xml" в Лиспе, когда следую примеру домашней страницы s-xml - PullRequest
0 голосов
/ 24 июня 2011

s-xml home: http://common -lisp.net / project / s-xml /

Я использую Clozure CL для запуска Lisp.Пока все работает нормально.

Затем я попробовал s-xml, как показано ниже:

Welcome to Clozure Common Lisp Version 1.7-dev-r14406M-trunk  (DarwinX8664)!
? (load "~/quicklisp/setup.lisp")
#P"/Users/zijia/quicklisp/setup.lisp"
? (ql:quickload "s-xml")
To load "s-xml":
  Load 1 ASDF system:
    s-xml
; Loading "s-xml"

("s-xml")
? (in-package :s-xml)
#<Package "S-XML">
? (print-xml '(p "Interesting stuff at " ((a href "http://slashdot.org") "SlashDot")))
<
> Error: There is no applicable method for the generic function:
>          #<STANDARD-GENERIC-FUNCTION GET-PREFIX #x302000AB172F>
>        when called with arguments:
>          (NIL)
> While executing: #<CCL::STANDARD-KERNEL-METHOD NO-APPLICABLE-METHOD (T)>, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Try calling it again
> Type :? for other options.
1 > 

(print-xml '(p "Интересные вещи в" ((ссылка) http://slashdot.org")«SlashDot»))) скопирован с http://common -lisp.net / project / s-xml / . Остальные примеры работают нормально. Что не так с этим «print-xml»?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Я получаю то же самое в SBCL.Быстрая проверка в Slime находит следующую переменную:

(defvar *ignore-namespaces* nil
  "When t, namespaces are ignored like in the old version of S-XML")

Я думаю, что документация на common-lisp.net устарела.Быстрое решение для вас было бы для let или setf этой переменной t, что заставило бы print-identifier просто напечатать этот идентификатор.

Я не знаю, как пространства имен предназначены дляиспользоваться;Вы можете попытаться найти это в более свежей документации, углубившись в код или связавшись с автором.

0 голосов
/ 27 июня 2011

Во-первых, 'print-xml', конечно, устарел. Вы можете написать свою собственную функцию печати XML. И вам даже не нужна документация, потому что интерфейс s-xml очень прост. Так что посмотрите xml.lisp, чтобы просмотреть исходный код. :)

...