Inserire tag XML in un'espressione XPath

mercoledì 05 luglio 2006 - 15.09

Sidur Profilo | Newbie

Ciao a tutti, sto costruendo una query in XQuery che parte da un'interrogazione formulata in XML.
Mi spiego meglio:

1. L'utente invia un file XML come se fosse un'interrogazione
2. XQuery interpreta l'interrogazione e interroga il database XML
3. Restituisce parte dei file XML contenenti i tag dell'interrogazione

A questo punto ho costruito una funzione che riceve dai parametri l'interrogazione, ma nel momento in cui utilizzo il parametro attuale per interrogare con XPath, mi da un problema.

Siccome devo inserire la variabile come opzione e non come spostamento del nodo contestuale, il motore interpreta in modo errato e non restituisce i risultati corretti. Se invece la inserisco come spostamento del nodo contestuale allora funziona.

Cioè:
for $d in doc("blabla.xml")//tag/tag2/$parametroattuale <--- questo funziona
for $d in doc("blabla.xml")//tag/tag2[$parametroattuale] <--- questo NON funziona

In pratica è come se inserissi tag XML nell'espressione XPath:

for $d in doc("blabla.xml")//tag/tag2/<taginviato><taginviato2>A</taginviato2></taginviato>
(che funziona)

oppure

for $d in doc("blabla.xml")//tag/tag2[<taginviato><taginviato2>A</taginviato2></taginviato>]
(che NON funziona)

Come posso risolvere questo problema? Grazie mille

Sidur Profilo | Newbie

No, non sto usando .NET.
Sto programmando la query in XQuery. Poi la invierò al database XML attraverso PHP.
Comunque se non sbaglio anche in XQuery esistono funzioni stringbuilder. Ma non vedo come potrei utilizzarla.

for $d in doc("blabla.xml")//tag/tag2[$input/tag1[position()=1]]
Qui il problema sta proprio nel fatto che io ho bisogno del tag2 che abbia al sue interno i figli specificati da $input (cioè il primo tag1 e figli). Una normale espressione XPath.
Il problema è che $input è fatto così

<input>
<tag1><tag2>2</tag2></tag1>
<tag1><tag2>3</tag2></tag1>
</input>

e se lo inserisco come opzione (cioè quello che mi serve) come ho fatto sopra, non so perché, ma non va.
Come posso aggirare il problema?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5