Mam taki dokument XML wraz z deklaracją DTD:
<?xml version = "1.0" encoding="windows-1250"?>
<!DOCTYPE książka [
<!ELEMENT książka (tytuł, autor+, wydawnictwo, rozdział+)>
<!ELEMENT rozdział (tytuł, porównaj*, punkt*, treść)>
<!ELEMENT punkt (tytuł, porównaj*, punkt*, treść)>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT treść (#PCDATA)>
<!ELEMENT tytuł (#PCDATA)>
<!ELEMENT wydawnictwo (#PCDATA)>
<!ELEMENT porównaj EMPTY>
<!ATTLIST rozdział id ID #REQUIRED>
<!ATTLIST punkt id ID #REQUIRED>
<!ATTLIST porównaj href IDREF #IMPLIED>
]>
<książka>
<tytuł>Bazy danych. Projektowanie aplikacji na serwerze</tytuł>
<autor>Lech Banachowski</autor>
<autor>Krzysztof Stencel</autor>
<wydawnictwo>EXIT</wydawnictwo>
<rozdział id="_1">
<tytuł>Wprowadzenie do tematyki baz danych</tytuł>
<porównaj href="_2.1"/>
<treść>Treść rozdziału 1.</treść>
</rozdział>
<rozdział id="_2">
<tytuł>SQL-język relacyjnych i obiektowo-relacyjnych baz danych</tytuł>
<punkt id="_2.1">
<tytuł>Podstawy</tytuł>
<punkt id="_2.1.standardowe">
<tytuł>Standardowe typy danych</tytuł>
<treść>O standardowych typach danych.</treść>
</punkt>
<treść>Podstawy SQL są dość proste.</treść>
</punkt>
<treść>Structured Query Language</treść>
</rozdział>
<rozdział id="_3">
<tytuł>Język SQL - zaawansowane konstrukcje</tytuł>
<treść>Bardzo zaawansowane konstrukcje.</treść>
</rozdział>
</książka>
I w materiale z którego się uczę (i z którego pochodzi ten kod) jest coś takiego:
"Ścieżki XQuery pozwalają też na przechodzenie przez wskaźnik podany jako atrybut typu IDREF. Możemy napisać zapytanie o tytuły punktów, do których są w tekście odwołania. Zrobimy to za pomocą operatora przejścia przez wskaźnik =>:
doc("dokument.xml")//porównaj/@href=>punkt/tytuł/text()
Wynikiem tego zapytania będzie tekst:
"Podstawy"
Tymczasem wynikiem tego zapytania jest error o treści: Unexpected token ">" for step expression.
Podejrzewam, że to jakieś stare materiały i coś się pozmieniało, próbowałem to zrobić za pomocą funkcji idref()
ale nie do końca rozumiem jak jej użyć w tym kontekście. Mógłby mnie ktoś naprowadzić?