XQuery HTML 数组输入

XQuery HTML array input

我是 XQuery 3.0 的新手,正在尝试编写一个项目。

我正在发送一个包含 song[] 输入元素的 post 请求。

但是,当我尝试使用 request:get-parameter('song[]', '') 时,结果如下:

Value 1 Value 2 Value 3

有人知道如何分别获取这些变量吗?

编辑:提供了发布到 eXist 的请求参数的实际内容。

HTML 形式:

<form action="post.xq" method="POST">
    <input name="song[]" type="text" value="Song 1" />
    <input name="song[]" type="text" value="Song 2" />
    <input name="song[]" type="text" value="Song 3" />
</form>

post.xq:

let $result := request:get-parameter('song[]', '')
return
    <result>
        {$result}
    </result>

结果:

<result>Song 1 Song 2 Song 3</result>

你的歌曲都在那里,作为一个 3 弦的序列。 $result 变量是 request:get-parameter() 函数返回的 3 个字符串的序列。要单独访问它们,您可以使用位置谓词,例如:

<result>{$result[1]}</result>

要全部输出,您可以使用 FLWOR 表达式,例如:

for $song at $n in $result
return
    <song n="{$n}">{$song}</song>

或者为了更简单的使用(假设 XQuery 3.0 可用),简单的映射运算符,例如:

$result ! <song>{.}</song>

或者以字符串形式返回值,用分号分隔,例如:

string-join($result, "; ")

您将它们视为单个 space 分隔字符串 (Song 1 Song 2 Song 3) 的原因是序列中的 3 个项目正在标准化,默认项目分隔符是单个space。有关序列规范化和项目分隔符的更多信息,请参阅 https://www.w3.org/TR/xslt-xquery-serialization-31/#serdm