跳转到内容

XQuery/特殊字符

来自维基教科书,自由的教科书

您希望控制在 XML 文件中放置换行符和引号等特殊字符的位置。

我们将使用 &#NN; 表示法创建 XQuery 变量(引用)到十进制编码的字符值,其中 NN 是此字符在字符集中的十进制数字。然后,我们可以在输出流中的任何位置添加这些变量。

示例程序

[编辑 | 编辑源代码]

在这个例子中,我们将创建一个变量 $nl,并让它引用换行符。然后,我们将把它放在一个字符串的中间。

xquery version "1.0";
let $nl := "
"
let $string := concat("Hello", $nl, "World")
return $string

返回值

  Hello
  World

以下显示了如何创建引号和换行符等特殊字符。

let $nl := "
"
let $quote := """
let $string := concat($quote, "Hello", $nl, "World", $quote)
return $string

返回值

  "Hello
  World"

请注意,这些变量的字符串长度 string-length($nl) 和 string-length($quote) 仅为一个字符。

其他有用的转义字符

[编辑 | 编辑源代码]
let $open-curly := '{' (: for { :)
let $closed-curly := '}' (: for } :)
let $space := ' ' (: space :)
let $tab := '	' (: tab :)
let $ampersand := '&' (: ampersand :)
let $zwsp := '​' (: zero width space :)

使用零宽度空格字符进行换行

[编辑 | 编辑源代码]

如果您在文本中包含 URL,以确保当启用连字符功能时它们能够优雅地换行

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

由 Joe Wicentowski 于 2014 年 3 月贡献

参考资料

[编辑 | 编辑源代码]

有关其他字符,请参见下表

华夏公益教科书