diff --git a/modules/intermediate_format/whitespace-handling.xqm b/modules/intermediate_format/whitespace-handling.xqm
index 030af1704362cbff491e2d61dd00b2159d4cf85d..dd7bee3d553dcdad37e57aada1cfd5ab5eea715c 100644
--- a/modules/intermediate_format/whitespace-handling.xqm
+++ b/modules/intermediate_format/whitespace-handling.xqm
@@ -30,15 +30,13 @@ declare function whitespace:text
     ( $text as text()*, $escape-char as xs:string? ) as text()* {
     
     let $normalized := normalize-space($text)
-    let $single-whitespace-between-nodes := $text
-                                            [ self::node() = ' ']
-(:                                            [preceding-sibling::node()[not(self::node() = text())]]:)
-(:                                            [following-sibling::node()[not(self::node() = text())]]:)
+    let $whitespace-node := $text[matches(., "[\s\n\r\t]") and normalize-space(.) = ""]
+    let $single-whitespace-between-nodes := $text = ' '
     return 
-        if ( $normalized != "" or $single-whitespace-between-nodes) then (
+        if ( not($whitespace-node) or $single-whitespace-between-nodes) then (
             
             if ($escape-char) then (
-                whitespace:escape-text($text, $escape-char) 
+                whitespace:escape-text($text, "#") 
             ) else ( whitespace:escape-text($text, " ") )
             
         )