aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-04-18 19:24:52 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-04-18 19:24:52 +0200
commit0edeea71ac64d86cba0bce5ecc58f2e54521d85b (patch)
treedfb31fadb40cdbb147fa0c73a2a5b8d00fee6f64
parentMove code for finding an available socket. (diff)
downloadcalp-0edeea71ac64d86cba0bce5ecc58f2e54521d85b.tar.gz
calp-0edeea71ac64d86cba0bce5ecc58f2e54521d85b.tar.xz
Allow namespaced sxml to add namespaces.
-rw-r--r--doc/ref/guile/sxml.texi3
-rw-r--r--module/sxml/namespaced.scm3
2 files changed, 5 insertions, 1 deletions
diff --git a/doc/ref/guile/sxml.texi b/doc/ref/guile/sxml.texi
index 8b0246f7..dd635b4c 100644
--- a/doc/ref/guile/sxml.texi
+++ b/doc/ref/guile/sxml.texi
@@ -50,6 +50,9 @@ Reads xml from port, and return a namespaced SXML tree.
Converts a ``regular'' SXML tree into a namespaced sxml tree.
@var{namespaces} must be an association list which maps each prefix
used in @var{tree} onto a full XML namespace.
+
+The key @code{#f} can be used to map non-namespaced elements into a
+namespace.
@end defun
@defun xml tag
diff --git a/module/sxml/namespaced.scm b/module/sxml/namespaced.scm
index 746b98bb..846f8f25 100644
--- a/module/sxml/namespaced.scm
+++ b/module/sxml/namespaced.scm
@@ -175,7 +175,8 @@
((tag) (values tag '())))))
(let ((parts (string-split (symbol->string tag-symb) #\:)))
(cons (case (length parts)
- ((1) (xml #f (string->symbol (car parts)) attrs))
+ ((1) (xml (assoc-ref namespaces #f)
+ (string->symbol (car parts)) attrs))
((2)
(cond ((assoc-ref namespaces (string->symbol (car parts)))
=> (lambda (ns) (xml ns (string->symbol (cadr parts)) attrs)))