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