XQuery/Special Characters
Motivation
[edit | edit source]You want to control where you put special characters such as newlines and quote characters in your XML files.
Method
[edit | edit source]We will create XQuery variables (referents) to the decimal encoded character values using the &#NN;
notation where NN is the decimal number for this character in the character set. We can then add these variables anywhere in the output stream.
Example Program
[edit | edit source]In this example we will create a variable $nl had have it refer to the newline character. We will then put this in the middle of a string.
xquery version "1.0";
let $nl := " "
let $string := concat("Hello", $nl, "World")
return $string
Returns:
Hello World
The following shows how both quote and newline special characters can be created.
let $nl := " "
let $quote := """
let $string := concat($quote, "Hello", $nl, "World", $quote)
return $string
Returns:
"Hello World"
Note that the string length of these variables string-length($nl) and string-length($quote) is only one character.
Other Useful Escape Characters
[edit | edit source]let $open-curly := '{' (: for { :)
let $closed-curly := '}' (: for } :)
let $space := ' ' (: space :)
let $tab := '	' (: tab :)
let $ampersand := '&' (: ampersand :)
let $zwsp := '​' (: zero width space :)
Using Zero Width Space Characters for Line Breaks
[edit | edit source]If you have URLs that appear in the text to ensure they break gracefully when hyphenation is enabled:
let $zwsp := '​' (: this is the unicode character for a zero-width space :)
let $break-before-hint := replace($node, '([%?])', concat($zwsp, '$1'))
let $break-after-hint :=
replace($break-before-hint, '([\.=&])', concat('$1', $zwsp))
return
$break-after-hint
Contributed by Joe Wicentowski in March of 2014
References
[edit | edit source]For other characters see the following table: