我是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>
答案 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。