poniedziałek, 28 grudnia 2009

xquery + xml

Xquery to na prawdę fajna rzecz, trochę przypomnienia.
cat fileA.xml

<sklep>
<rodzaje>
<rodzaj id="1">
<nazwa>Przyprawa</nazwa>
</rodzaj>
<rodzaj id="2">
<nazwa>Warzywo</nazwa>
</rodzaj>
</rodzaje>
<produkty>
<produkt id="1">
<nazwa>Majonez</nazwa>
<cena>4,30</cena>
<rodzaj>1</rodzaj>
</produkt>
<produkt id="2">
<nazwa>Musztarda</nazwa>
<cena>1,99</cena>
<rodzaj>1</rodzaj>
</produkt>
<produkt id="3">
<nazwa>Brokuł</nazwa>
<cena>3</cena>
<rodzaj>2</rodzaj>
</produkt>
</produkty>
</sklep>
Teraz zeby wyciągnąć wszystkie wartości z korzenia sklep w xquery piszemy
doc("fileA.xml")/sklep/*
Jeśli chcemy tylko produktu numer 3
doc("fileA.xml")/sklep/produkty/produkt[@id="3"]
A jeśli chcielibyśmy aby rodzaj nie był numerowym atrybutem tylko słownym (warzywo nie 2)
for $x in doc("fileA.xml")/sklep/produkty/produkt[@id="2"]
return
{$x/nazwa}
{$x/cena}
{$x/../../rodzaje/rodzaj[@id=$x/rodzaj]/nazwa}
Prześlij komentarz