ich eine XQuery zu schreiben versuchen zurückzukehren, die alle Textknoten finden würden, das einen bestimmten Schlüsselwort in einer XML-Datei enthalten. Der Textknoten ist lang, daher möchte ich einen Teilstring (mit einer gewünschten Länge) des Texts beginnend mit dem übereinstimmenden Schlüsselwort zurückgeben.Mit functx: index-of-Match-first in XQuery eine Teiltextknoten
Samplefile.xml
<books>
<book>
<title>linear systems</title>
<content>vector spaces and linear system analysis </content>
</book>
<book>
<title>some title</title>
<content>some content</content>
</book>
</books>
samplexquery.xq
declare namespace functx = "http://www.functx.com";
for $match_result in /*/book/*[contains(.,'linear')]/text()
return substring($match_result, functx:index-of-match-first($match_result,'linear'), 50)
Ich erwarte, dass das Ergebnis [lineare Systeme, lineare Systemanalyse] erhalten. Der Titelknoten des ersten Buches enthält das Wort "linear". Geben Sie 50 Zeichen beginnend mit 'linear ....' zurück. Ähnlich für den Inhaltsknoten des ersten Buches.
Ich bin mit XQuery 1.0 und I enthalten den Namespace functx wie bei im gezeigten Beispiel: http://www.xqueryfunctions.com/xq/functx_index-of-match-first.html
Aber das mir einen Fehler geben: [XPST0017] Unbekannte Funktion „functx: index-of-Match- zuerst(...)".
Danke, Sony
Gute Frage, +1. Siehe meine Antwort für eine Erklärung und Lösung. :) –