2016-12-24 4 views
2

Я новичок в XQuery 3.0 и пытаюсь написать проект.Входной массив HTML XQuery

Я отправляю запрос на отправку, содержащий 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

Можете ли вы предоставить фактическое содержимое параметра запроса POSTed для eXist? – joewiz

+0

@joewiz Я отредактировал мой вопрос. – yenerunver

ответ

3

Ваши песни есть все, как последовательность из трех строк. Переменная $result представляет собой последовательность из трех строк, возвращаемых функцией request:get-parameter(). Для того, чтобы получить доступ к ним по отдельности, вы можете использовать позиционный предикат, например:

<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.

+0

joewiz снова сохранил этот день :) – yenerunver

Смежные вопросы