2016-12-24 4 views
2

Ich bin neu in XQuery 3.0 und versuche, ein Projekt zu schreiben.XQuery HTML-Array-Eingabe

Ich sende eine Post-Anfrage mit song[] Eingabeelement.

aber wenn ich versuche, request:get-parameter('song[]', '') zu verwenden, gibt es mir ein Ergebnis wie folgt:

Value 1 Value 2 Value 3 

Jeder weiß, wie getrennt, diese Variablen zu bekommen?

Bearbeiten: Der tatsächliche Inhalt des Anforderungsparameters, der an eXist POST ist, wird bereitgestellt.

HTML Form:

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

Ergebnis:

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

Können Sie den tatsächlichen Inhalt des Anforderungsparameters angeben, der an EXIST gesendet wird? – joewiz

+0

@joewiz Ich habe meine Frage bearbeitet. – yenerunver

Antwort

3

Ihre Songs sind alle da, als Folge von 3 Streichern. Die Variable $result ist eine Folge von 3 Strings, die von der request:get-parameter()-Funktion zurückgegeben werden. Um sie einzeln zugreifen, können Sie ein Positions Prädikat verwenden, zB:

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

Zur Ausgabe alle sie könnten Sie einen FLWOR Ausdruck verwenden, zB:

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

oder für einfachere Anwendungen (unter der Annahme, XQuery 3.0 ist vorhanden), die einfache Karte Betreiber, zB:

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

Oder durch die Werte als String, getrennt Rückkehr, sagen wir, ein Semikolon, zB:

Der Grund, warum Sie sie als eine durch Leerzeichen getrennte Zeichenfolge (Song 1 Song 2 Song 3) sehen, besteht darin, dass die drei Elemente in der Sequenz normalisiert werden und das standardmäßige Elementtrennzeichen ein einzelnes Leerzeichen ist. Weitere Informationen zur Sequenznormalisierung und zum Elementtrennzeichen finden Sie unter https://www.w3.org/TR/xslt-xquery-serialization-31/#serdm.

+0

joewiz hat den Tag wieder gerettet :) – yenerunver