XPath

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> → Elementknoten
  • lang="eng" → Attributknoten
  • Harry Potter → Textknoten

Konzept

  1. Atomwert (Atomic value): Knoteninhalt ohne Kind‑ oder Elternknoten, z.B. eng, 29.99
  2. Item: Item = Knoten oder Atomwert

Beziehungen zwischen XML‑Knoten

Als Beispiel dient <bookstore><book><title></title></book></bookstore>

  1. Elternknoten(Parent): Jedes Element und jedes Attribut hat genau einen Elternknoten; book ist der Elternknoten von title
  2. Kindknoten(Children): Ein Element kann mehrere Kindknoten besitzen; title und price sind Kindknoten von book
  3. Geschwisterknoten(Sibling): Sie teilen sich denselben Elternknoten; title und price auf gleicher Ebene sind gegenseitig Geschwister
  4. Vorfahre(Ancestor): Elternknoten, Großelternknoten und alle weiter oben liegenden Knoten; Vorfahren von title sind 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)
AusdruckBedeutung
bookstoreWähle das bookstore‑Element unter der Wurzel aus
/bookstoreAbsoluter Pfad, beginnt die Übereinstimmung am Wurzelknoten
bookstore/bookWähle alle untergeordneten book‑Elemente unter bookstore aus
//bookbook‑Elemente an jeder beliebigen Stelle im Dokument (globale Suche)
//@langWä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 &gt; 160">
            <li>
                <xsl:value-of select="position()" /><!--Laufende Nummer ausgeben-->
                <xsl:value-of select="name"/><!--Mehrfach‑Bedingungsauswertung-->
                <xsl:choose>
                    <xsl:when test="height &gt; 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert