Eine Liste von Büchern liegt als XML-Datei vor:

jl_notes101.xml

<?xml version='1.0' encoding='iso-8859-1'?>
<data>
 <book nr='381'>
  <title>XSLT 2.0</title>
  <author>Kay, Michael</author>
  <isbn>0764569090</isbn>
 </book>
 <book nr='3'>
  <title>Bound to Rise</title>
  <author>Alger, Horatio</author>
  <isbn>?</isbn>
 </book>
 <book nr='401'>
  <title>XML in a Nutshell</title>
  <author>Means, W. Scott</author>
  <author>Harold, Elliotte Rusty</author>
  <isbn>3897213397</isbn>
 </book>
 <book nr='113'>
  <title>Brave and Bold</title>
  <author>Alger, Horatio</author>
  <isbn>?</isbn>
 </book>
</data>

Diese Liste soll nach Autoren und anschließend nach Titeln sortiert werden. Bücher mit mehreren Autoren sollen dabei auch mehrfach aufgeführt werden:

Verfasser Alger, Horatio
Titel Bound to Rise
ISBN ?

Verfasser Alger, Horatio
Titel Brave and Bold
ISBN ?

Verfasser Harold, Elliotte Rusty; Means, W. Scott
Titel XML in a Nutshell
ISBN 3897213397

Verfasser Kay, Michael
Titel XSLT 2.0
ISBN 0764569090

Verfasser Means, W. Scott; Harold, Elliotte Rusty
Titel XML in a Nutshell
ISBN 3897213397

Diese Aufgabe erledigt das Stylesheet jl_notes101.xsl wenn es auf eine XML-Datei angewendet wird, die wie jl_notes101.xml strukturiert ist.

jl_notes101.xsl

<?xml version='1.0' encoding='iso-8859-1'?>
<xsl:stylesheet version='1.0'>
 <xsl:output method='html' indent='yes'>
 </xsl:output>
 <xsl:template match='/'>
  <html><body>
  <xsl:apply-templates select='//author'>
   <xsl:sort select='.'></xsl:sort>
   <xsl:sort select='parent::book/title'></xsl:sort>
  </xsl:apply-templates>
  </body></html>
 </xsl:template>
 <xsl:template match='author'>
  <table border='1' style='{border-color: green;}'>
   <tr>
    <td>Verfasser</td>
    <td><b>
     <xsl:value-of select='.'></xsl:value-of></b>
     <xsl:variable name='sortme' select='.'></xsl:variable>
     <xsl:for-each select='parent::book/author'>
      <xsl:if test='. != $sortme'>
       <xsl:text>; </xsl:text>
       <xsl:value-of select='.'></xsl:value-of>
      </xsl:if>
     </xsl:for-each>
    </td>
   </tr>
   <tr style='{background-color: beige;}'>
    <td>Titel</td>
    <td><xsl:value-of select='parent::book/title'></xsl:value-of> </td>
   </tr>
   <tr>
    <td>ISBN</td>
    <td> <xsl:value-of select='parent::book/isbn'></xsl:value-of></td>
   </tr>
  </table>
  <br></br>
 </xsl:template>
</xsl:stylesheet>

Fügt man als Zeile 2 in der Datei jl_notes101.xml einen Bezug auf das Stylesheet:
<?xml-stylesheet href="jl_notes101.xsl" type="text/xsl"?>
als Verarbeitungsanweisung (processing instruction) ein, dann genügt fürderhin ein Klick auf den Dateinamen der XML-Datei und der Browser führt die darin angegebene Transformation aus.

Alle Dateien für dieses Beispiel befinden sich hier. Entpacken in ein eigenes Verzeichnis und Anklicken von jl_notes101_2.xml sollte die transformierte XML-Datei im Browser anzeigen. Vorausgesetzt, dieser ist einigermaßen modern und unterstützt XSLT. (Getestet mit Mozilla 1.7.5 und Internet Explorer 6.0 SP1.)