aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/sxml/namespace.scm5
-rw-r--r--tests/xml-namespace.scm30
2 files changed, 33 insertions, 2 deletions
diff --git a/module/sxml/namespace.scm b/module/sxml/namespace.scm
index 57250b93..19211227 100644
--- a/module/sxml/namespace.scm
+++ b/module/sxml/namespace.scm
@@ -34,8 +34,9 @@
(define (nssymb key)
(define namespace
(if (list? namespace-map)
- (or (assoc-ref namespace-map key)
- (error "No mapping for namespace" key))
+ (cond ((assoc key namespace-map)
+ => cdr)
+ (else key))
namespace-map))
(cond
diff --git a/tests/xml-namespace.scm b/tests/xml-namespace.scm
new file mode 100644
index 00000000..74053fd8
--- /dev/null
+++ b/tests/xml-namespace.scm
@@ -0,0 +1,30 @@
+(((sxml namespace)
+ move-to-namespace
+ ))
+
+
+(test-equal "Move unnamespaced to namespace"
+ '(NEW:test)
+ (move-to-namespace '(test) '((#f . NEW))))
+
+(test-equal "Swap namespaces"
+ '(b:a (a:b))
+ (move-to-namespace '(a:a (b:b)) '((a . b) (b . a))))
+
+(test-equal "Remove all namespaces"
+ '(a (b))
+ (move-to-namespace '(a:a (b:b)) #f))
+
+(test-equal "Move everything to one namespace"
+ '(c:a (c:b))
+ (move-to-namespace '(a:a (b:b)) 'c))
+
+(test-equal "Partial namespace change"
+ '(c:a (b:b))
+ (move-to-namespace '(a:a (b:b))
+ '((a . c))))
+
+(test-equal "Remove specific namespace"
+ '(a:a (b))
+ (move-to-namespace '(a:a (b:b))
+ '((b . #f))))