diff --git a/collects/meta/web/html/xml.rkt b/collects/meta/web/html/xml.rkt
index 721a4e22cc..09c92e0ca6 100644
--- a/collects/meta/web/html/xml.rkt
+++ b/collects/meta/web/html/xml.rkt
@@ -2,7 +2,7 @@
;; XML-like objects and functions, with rendering
-(require scribble/text)
+(require scribble/text racket/port)
;; ----------------------------------------------------------------------------
;; Represent attribute names as `foo:' symbols. They are made self-quoting in
@@ -61,6 +61,10 @@
(define (output-xml content [p (current-output-port)])
(output (disable-prefix (with-writer (xml-writer) content)) p))
+(provide xml->string)
+(define (xml->string content)
+ (with-output-to-string (lambda () (output-xml content))))
+
;; ----------------------------------------------------------------------------
;; Structs for xml data: elements, literals, entities
diff --git a/collects/meta/web/stubs/blog.rkt b/collects/meta/web/stubs/blog.rkt
index ad2ff083b0..bf1bfbacef 100644
--- a/collects/meta/web/stubs/blog.rkt
+++ b/collects/meta/web/stubs/blog.rkt
@@ -26,13 +26,14 @@
@navbar-style
})
-(define (xml->string content)
- (regexp-replace* #rx" "
- (with-output-to-string (lambda () (output-xml content)))
- "\\ "))
+(define (get-resource-text . args)
+ (let ([str (xml->string (apply www:the-resources args))])
+ ;; due to some obscure xml issue the `nbsp' entity is not recognized
+ ;; in blogger pages
+ (regexp-replace* #rx" " str "\\ ")))
-(define (racket-navbar) (xml->string (www:the-resources 'navbar #f)))
-(define (racket-favicon) (xml->string (www:the-resources 'favicon-headers)))
+(define (racket-navbar) (get-resource-text 'navbar #f))
+(define (racket-favicon) (get-resource-text 'favicon-headers))
(provide blog)
(define blog
diff --git a/collects/meta/web/stubs/dirlist.rkt b/collects/meta/web/stubs/dirlist.rkt
index 14aa11f2bb..6486e8ac1d 100644
--- a/collects/meta/web/stubs/dirlist.rkt
+++ b/collects/meta/web/stubs/dirlist.rkt
@@ -6,12 +6,6 @@
(define-context "stubs/dirlist" #:resources dnld:the-resources)
-(require racket/port)
-(define (xml->string content)
- (regexp-replace* #rx" "
- (with-output-to-string (lambda () (output-xml content)))
- "\\ "))
-
(define header+footer
(delay (regexp-split #rx"{{{BODY}}}"
(xml->string @page[#:id 'browse-downloads