XQuery/Special Characters

MotivationEdit

You want to control where you put special characters such as newlines and quote characters in your XML files.

MethodEdit

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 ProgramEdit

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 $quote := """
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 CharactersEdit

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 BreaksEdit

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

Reference

For other characters see the following table:

Last modified on 26 March 2014, at 19:59