ZSBD-2st-1.2-w10.tresc-1.4-Slajd29
XML-QL – przykład
W przykładzie zapytania XML-QL zastosowano podzapytanie. Zostało ono ograniczone nawiasami klamrowymi. Jego zadaniem jest skonstruowanie elementu zewnętrznego male_zespoly (jest tu użyta niejawna klauzula CONSTRUCT). Podzapytanie składa się z wzorca rozpoczynającego się od elementu <zespoly>. Wzorzec składa się z dwóch części rozdzielonych przecinkiem. Zadaniem pierwszej części wzorca jest wielokrotne dopasowanie się do zawartości dokumentu zespoly.xml. W wyniku każdorazowego dopasowania zmienne $z, $n i $a uzyskują odpowiednie wartości. Jednocześnie, w wyniku każdego dopasowania, tworzona jest kolejna krotka podlegająca przetwarzaniu. Przy założeniu, że dokument zespoly.xml został przedstawiony na slajdzie, wzorzec użyty w zapytaniu utworzy 2 krotki zawierające każdorazowo trzy zmienne. Wartości zmiennych w kolejnych krotkach zostały przedstawione na slajdzie. Druga część wzorca sprawdza czy zawartość zmiennej $z to "zespol". Ten fragment wzorca funkcjonuje analogicznie do klauzuli WHERE w XQuery. Krotki wygenerowane za pomocą klauzuli WHERE zostają następnie przetwarzane za pomocą klauzuli CONSTRUCT. W naszym przykładzie tworzy ona elementy <NiA>, których zawartość zostanie zbudowana w oparciu o wartości zmiennych $n i $a.
Zwróćmy uwagę, że wzorzec wykorzystywany przez język XML-QL odpowiada klauzulom FOR i LET oraz wyrażeniom XPath używanym w języku XQuery. Sposób definiowania wzorca powoduje, że zwykle przyjmuje on duże rozmiary, ponadto nie jest on tak funkcjonalny jak wyrażenia XPath.
Podstawowymi wadami XML-QL są:
- brak możliwości korzystania z wyrażeń XPath i funkcji XPath
- brak obsługi przestrzeni nazw
- brak funkcji grupowych