如何在XQuery中使用或实现数组?

Ran*_*rma 3 java xml xquery marklogic

在XQuery中是否有对数组的内置支持?例如,如果我们想在xquery中实现简单的java程序,我们该怎么做:

(我不是要求将整个程序翻译成xquery,而只是询问如何将下面代码的第2行中的数组实现到xquery?我也使用了marklogic/xdmp函数).

java.lang.String test = new String("Hello XQuery");
char[] characters = test.toCharArray();

for(int i = 0; i<characters.length; i++) {
    if(character[i] == (char)13) { 
        character[i] = (char) 0x00;
    }
}

Legend:

hex 0x00 dec 0 : null
hex 0x0d dec 13: carriage return
hex 0x0a dec 10: line feed
hex 0x20 dec 22: dquote
Run Code Online (Sandbox Code Playgroud)

Mic*_*Kay 6

将示例代码转换为的问题XQuery不是缺少对数组的支持,而是x00不是有效字符的事实XML.如果不是这个问题,你可以用简单的函数调用来表达你的查询:

translate($input, '&#x13;', '&#x00;')
Run Code Online (Sandbox Code Playgroud)

现在,你可以说这是作弊,只是发生这样的事情,以便有一个功能完全符合你想要手工做的事情.但是如果这个函数不存在,你可以编写它XQuery:有足够的原语可用于字符串,允许你以任何你想要的方式操作它们.如果您需要(并且很少需要),您可以使用该函数将字符串转换为整数序列string-to-codepoints(),然后利用所有XQuery工具来操作序列.

我们的教训是,当你使用像XQuery或那样的声明性语言时XSLT,不要尝试使用相同的低级编程技术,而是被迫使用更原始的语言.通常有一种更直接的方式来表达问题.