André Laugks: apply-templates und Element "überspringen"

Beitrag lesen

Hallo!

Es ist folgendes XML-Dokument gegeben.

XML-Datei

<?xml version="1.0" encoding="iso-8859-1"?>
<liste>
 <eintrag>
  <vorname>André</vorname>
  <nachname>Laugks</nachname>
 </eintrag>
 <eintrag>
  <vorname>Werner</vorname>
  <nachname>Otto</nachname>
 </eintrag>
</liste>

Mit folgender XSLT-Datei bekomme ich alle Kind-Element ausgegeben.

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>
   <body>
    xsl:apply-templates/
   </body>
  </html>
 </xsl:template>

<xsl:template match="eintrag">
  <b><xsl:value-of select="."/></b>
 </xsl:template>

</xsl:stylesheet>

Sobald ich aber <xsl:apply-templates select="eintrag"/> nehme, bekomme ich nichts mehr ausgegeben. Ich wähle doch den Knoten "eintrag" aus?

So bekomme ich wieder was ausgegeben.

<xsl:template match="/liste">
  <html>
   <body>
    <xsl:apply-templates select="eintrag"/>
   </body>
  </html>
 </xsl:template>

Aber <xsl:template match="/"> bezieht sich doch auf das Root-Element "liste".

So möchte ich mir nur die Vornamen ausgeben lassen. Ich bekomme natürlich auch nichts ausgegeben. Kann ich in dem Pfad nicht springen. Muß ich immer komplet (/liste/eintrag/vorname) referenzieren?

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>
   <body>
    <xsl:apply-templates select="vorname"/>
   </body>
  </html>
 </xsl:template>

<xsl:template match="vorname">
  <b><xsl:value-of select="."/></b>
 </xsl:template>

</xsl:stylesheet>

Irgendwie ist mir das heute erst aufgefallen.

MfG, André Laugks
L-Andre @ gmx.de