Konzept
XPath ist ein W3C‑Standard, der speziell für die Navigation und Suche von Knoten in XML‑Dokumenten entwickelt wurde und die zentrale Grundlage von XSLT darstellt. Alle Ausdrücke innerhalb von select="" und test="" in XSLT nutzen XPath.
- Knoten über Pfadausdrücke lokalisieren
- Mehr als 100 integrierte Standardfunktionen: String‑Operationen, numerische Berechnungen, Datumsvergleiche, Knotenverarbeitung, logische Operationen uvm.
7 Knotentypen
Dokumentknoten (Wurzelknoten), Elementknoten, Attributknoten, Textknoten, Kommentarknoten, Verarbeitungsanweisungsknoten, Namespace‑Knoten.
Beispiel:
<title lang="eng">Harry Potter</title>
<title>→ Elementknotenlang="eng"→ AttributknotenHarry Potter→ Textknoten
Konzept
- Atomwert (Atomic value): Knoteninhalt ohne Kind‑ oder Elternknoten, z.B.
eng,29.99 - Item: Item = Knoten oder Atomwert
Beziehungen zwischen XML‑Knoten
Als Beispiel dient <bookstore><book><title></title></book></bookstore>
- Elternknoten(Parent): Jedes Element und jedes Attribut hat genau einen Elternknoten;
bookist der Elternknoten vontitle - Kindknoten(Children): Ein Element kann mehrere Kindknoten besitzen;
titleundpricesind Kindknoten vonbook - Geschwisterknoten(Sibling): Sie teilen sich denselben Elternknoten; title und price auf gleicher Ebene sind gegenseitig Geschwister
- Vorfahre(Ancestor): Elternknoten, Großelternknoten und alle weiter oben liegenden Knoten; Vorfahren von
titlesind book und bookstore
Pfadausdrücke
XML‑Knoten mithilfe von Pfaden und Schritten auswählen
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
</bookstore>Code-Sprache: HTML, XML (xml)
| Ausdruck | Bedeutung |
|---|---|
bookstore | Wähle das bookstore‑Element unter der Wurzel aus |
/bookstore | Absoluter Pfad, beginnt die Übereinstimmung am Wurzelknoten |
bookstore/book | Wähle alle untergeordneten book‑Elemente unter bookstore aus |
//book | book‑Elemente an jeder beliebigen Stelle im Dokument (globale Suche) |
//@lang | Wähle alle Attributknoten mit dem Namen lang aus |
XPath‑Funktion:position()
<xsl:value-of select="position()" />Code-Sprache: HTML, XML (xml)
position() ist eine integrierte XPath‑Funktion, sie liefert die laufende Nummer des aktuell durchlaufenen Knotens innerhalb der Knotenmenge, die Zählung beginnt bei 1.
Beispiel: Nummern ausgeben
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head></head>
<body>
<ul>
<!--Alle Schüler class/student durchlaufen -->
<xsl:for-each select="class/student">
<xsl:sort select="age"/> <!--Aufsteigend nach Alter sortieren-->
<!--Schüler mit Körpergröße >160 filtern-->
<xsl:if test="height > 160">
<li>
<xsl:value-of select="position()" />、<!--Laufende Nummer ausgeben-->
<xsl:value-of select="name"/>;
<!--Mehrfach‑Bedingungsauswertung-->
<xsl:choose>
<xsl:when test="height > 200">
<b><xsl:value-of select="age"/></b>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="age"/>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Code-Sprache: HTML, XML (xml)
XPath