exist-edirom2024
eXist Workshop bei der Edirom School 2024 in Paderborn
Project maintained by martinascholger
Hosted on GitHub Pages — Theme by mattgraham
Was ist XPath
XPath ist eine Syntax, die in XSLT, XQuery und anderen X-Technologien verwendet wird, um in XML-Dokumenten zu navigieren und “Rückgaben” zu erzeugen.
Dabei können zum Beispiel Teilbäume extrahiert, Daten manipuliert oder Elemente gezählt werden.
Knotentypen
- Dokumentknoten (wird mit
/
adressiert, um das Dokument einzulesen)
- Wurzelknoten (
TEI
)
- Elementknoten (
opener
, closer
, persName
)
- Attributknoten (
@ref
, @type
)
- Textknoten (
text()
)
XPath-Navigation
- Ein Lokalisierungsschritt besteht aus einer Achsenangabe, dem Knotentext und ggf. einem Prädikat:
//rs[@type='person']
- Navigieren Sie über die Achsen
child::
(Kurzversion ohne Achsenangabe) und descendant::
(Kurzversion //)
- Probieren Sie die Achsen
preceding
und preceding-sibling
aus. (Es gibt äquivalente Achsen mit “following”.)
- Wenden Sie Prädikate als boolesche Filter an, indem Sie
[. . .]
verwenden.
- Sehen Sie sich XPath-Funktionen an:
normalize-space()
count()
distinct-values()
- Es gibt verschiedene Stile, diese Ausdrücke zu schreiben: Verschachtelung (XPath 2) vs. simple-map:
!
und Pfeiloperator: =>
(XPath 3)
//*/normalize-space()
(XPath 2) vs. //* ! normalize-space()
(XPath 3) bedeuten dasselbe.
text()
-Knoten vs. //string()
und eine “tiefgehende” Diskussion darüber, was normalize-space()
bewirkt.
- Grundlegende mathematische und arithmetische Operationen.
XPath-Ausdrücke
- Welcher XPath findet die Absätze in der Datei?
- Welcher XPath findet nur die Absätze im <body>-Element?
- Welcher XPath identifiziert nur das <persName>-Element im <closer>?
- Welcher XPath findet den Namen des Absenders / der Absenderin?
Für Briefe mit kodierten Namen
- Welcher XPath findet alle in dem Brief kodierten Personennamen?
- Wie viele gibt es davon?
- Welcher XPath findet die Werte des @ref-Attributs in den <persName>-Elementen?
- Welche Funktion findet die eindeutigen Attributwerte?
Links