XQuery HTML数组输入

时间:2016-12-24 08:03:33

标签: xml xquery exist-db xquery-3.0

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

我发送的帖子请求包含song[]输入元素。

但是,当我尝试使用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>

1 个答案:

答案 0 :(得分:3)

你的歌曲都在那里,作为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, "; ")

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