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ć?