XPath

Start

XML

Namespace

XSL

DTD

Schema

Standardisierung

IMS LD

EML

LMML

Akronyme

Quellen

 

 

XSL: Templates ] XSLT ] XSL-FO ] XPath ]   Bsp.: [ XML-Buchliste ] [ value-of ] [ for-each ] [ apply-templates ] [ XPath ]

Auswahl bestimmter Element (XPath)

Mit Hilfe von XPATH-Pfadangaben kann eine Auswahl bestimmter Inhalte für die Ausgabe festgelegt werden.

Auf Attribute wird mit dem Zeichen @ verwiesen. Die XPATH-Pfadangabe buchliste/buch[@bewertung='sehr gut'] weist den XSLT-Prozessor an alle Elemente buch mit der Bewertung sehr gut, die Kinder des Elementes buchliste sind, anzuzeigen. Der zu suchende Ausdruck (expression) sehr gut wird mit eckigen Klammern und einem @ zu dem Element gesetzt, an dem er vorkommt. Sucht man den Textinhalt eines Elementes und keine Attributwerte, wird das @ weggelassen (z. B. buchliste/buch[ausgabe='Taschenbuch']). Soll ein Attributwert nur angezeigt und nicht nach ihm gesucht werden, setzt man hinter dem Element, an dem er vorkommt ein /@ (z. B. autor/@geburtsort). Mit <td> <xsl:value-of select="position()"></xsl:value-of> </td> kann eine Nummerierung vorgenommen werden. Das XSLT-Element number ergibt 1 und 3 als Ergebnis. Es nummeriert also alle child-Knoten durch. Wird in namespaces gearbeitet, muss in XPATH-Anweisungen vor den Elementnamen (nicht vor Attributnamen) der namespace angegeben werden (z. B. <xsl:value-of select="namespace-präfix:lmml/namespace-präfix:section/@title"/>)

Quelltext der XSLT-Datei:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
   <html>
   <head>
   <title></title>
   </head>
   <body>
   <h1>Buchtitel mit sehr guter Bewertung und der Anzeige eines evtl. angegebenen Geburtsortes des Autors</h1>
   <table border="1">
   <tbody>
      <tr>
        <th>Titel</th>
        <th>Bewertung</th>
        <th>Autor Vorname</th>
        <th>Autor Nachname</th>
        <th>Autor Geburtsort</th>
        <th>Ausgabe</th>
        <th>Seiten</th>
        <th>Preis</th>
       </tr>
         <xsl:apply-templates select="buchliste/buch[@bewertung='sehr gut']"/>
   </tbody>
   </table>
   </body>
   </html>
</xsl:template>

<xsl:template match="buch">
   <tr>
      <td> <xsl:value-of select="titel"/> </td>
      <td> <xsl:value-of select="@bewertung"/> </td>
      <td> <xsl:value-of select="autor/vorname"/> </td>
      <td> <xsl:value-of select="autor/nachname"/> </td>
      <td> <xsl:value-of select="autor/@geburtsort"/> </td>
      <td> <xsl:value-of select="ausgabe"/> </td>
      <td> <xsl:value-of select="seiten"/> </td>
      <td> <xsl:value-of select="preis"/> </td>
   </tr>
</xsl:template>

</xsl:stylesheet>