Dinamikus konstruktorok

Az eddigiek során már számtalan módot láttunk arra, hogy miként lehet elérni a csomópontokat. Az XQuery ezen felül támogatja még csomópontok dinamikusan (futási időben) történő létrehozását is. Nagyon fontos kiemelni a már korábban is említett csomópont identitást újra, mert amit egy konstruktor létrehoz az új azonosítóval fog rendelkezni.

Miután az XQuery esetén az elemszekvenciák mindig kiegyenesítődnek, csak ezen konstruktorok segíthetnek a hierarchikus adatok előállításában. ( Ez egyben alkalmassá is teszi arra, hogy esetlegesen XSLT transzformációkat váltsunk ki XQuery segítségével. ) Az XQuery a hét csomópont típusnak megfelelően hét különböző konstruktorral rendelkezik. Mindegyik esetében létezik

A legjelentősebb konstruktorok:

A dinamikus konstruktorok közül az elem konstruktor a legrugalmasabb. A tartalmat megadó szekvencia elemei bármilyen csomóponttípusba tartozhatnak. Az összeállítás során az alábbiakat végzi el a feldolgozó:

  1. egymást követő karakter literálok egy szöveges csomóponttá válnak.

  2. a dinamikus részek kiértékelődnek: {}

  3. a szomszédos atomi értékek sztringgé konvertálódnak és szóköz segítségével összefűzésre kerülnek

  4. a másolt csomópontok tartalommal együtt másolásra kerülnek és új identitást kapnak

  5. szomszédos szöveges csomópontok összefűzésre kerülnek. Az üresek ("") pedig eldobódnak.

// Tippeljük meg mennyi lesz a kifejezés értéke (azaz mennyi csomópont készül?):
count(
<x>Negyvenkettő{40 + 2}{ "pi",3.1415,<y><z/></y>,("","!")[1] }</x>/node()
)

A tartalom létrehozásánál egy dologra kell mindenképp figyelni: jól-formázott tartalomra van szükség. (Azaz nem egyezhet meg attribútumok neve, és meg kell előzniük minden más tartalmat.) Ezen felül akármilyen tartalmat is hozunk létre, az mindig dokumentumsorrendet is jelent.