diff --git a/tekuti/filters.scm b/tekuti/filters.scm
index be37d0c..5c64f39 100644
--- a/tekuti/filters.scm
+++ b/tekuti/filters.scm
@@ -80,15 +80,24 @@
(define (wordpress->sxml text)
(let ((sxml (cadr (with-input-from-string* (string-append "
" text "
")
- xml->sxml))))
+ (lambda () (xml->sxml #:namespaces '((svg . "http://www.w3.org/2000/svg"))))))))
(pre-post-order
sxml
`((*default* . ,(lambda (tag . body)
- (if (can-contain-p? tag)
- (wpautop tag body)
- (cons tag body))))
+ (let ((tag (if (string-prefix? "svg:" (symbol->string tag))
+ (string->symbol (substring (symbol->string tag) 4))
+ tag)))
+ (if (can-contain-p? tag)
+ (wpautop tag body)
+ (cons tag body)))))
(*text* . ,(lambda (tag text)
- text))))))
+ text))
+ (svg:svg . ,(lambda (tag . body)
+ (cons 'svg
+ (cons `(@ (xmlns "http://www.w3.org/2000/svg")
+ (xmlns:xlink "http://www.w3.org/1999/xlink")
+ ,@(cdar body))
+ (cdr body)))))))))
(define *allowed-tags*
`((a (href . ,urlish?) title)