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, " ") ) )