Armin Heimbach: xPath: Verständnisproblem bei Adressierung mit Positionsangabe

Beitrag lesen

Hallo,
ich habe ein Verständnisproblem bei der Adressierung von Knoten.

Gegeben ist folgende Besipieldatei:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="mitarbeiter1.xsl" ?>

<mb-datenbank>
        <mitarbeiter>
            <nachname>Meier</nachname>
            <telefon>3421</telefon>
        </mitarbeiter>
        <mitarbeiter>
            <nachname>Müller</nachname>
            <telefon>5564</telefon>
        </mitarbeiter>
        <mitarbeiter>
            <nachname>Hinkelstein</nachname>
            <telefon>3456</telefon>
            <untergebene>
                <mitarbeiter>
                    <nachname>Schulz</nachname>
                    <telefon>3321</telefon>
      </mitarbeiter>
  </untergebene>
         </mitarbeiter>
</mb-datenbank>

Ausgeben möchte ich die Datei mit folgendem Stylesheet

<?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>
                  <p><b>Anzahl gesammt:<xsl:value-of select="count (.//nachname)"/></b></p>
                  <p><xsl:value-of select =".//nachname [1]" /></p>
    <p><xsl:value-of select =".//nachname [2]" /></p>
    <p><xsl:value-of select =".//nachname [3]" /></p>
    <p><xsl:value-of select =".//nachname [4]" /></p>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

Der Locationpath ".//nachname" müsste meiner Meinung nach ein Knotenset mit vier Knoten zurückgeben.
Die count Funktion gibt auch die Zahl vier zurück.
Wenn ich aber die Knoten mit einem Prädikat adressieren möchte bekomme ich nur bei "[1]" ein Ergebniss.

Das Beispiel habe ich mit dem IE6 (msxml 4.0) und Saxon getestet und bei beiden die gleichen Ergebnisse erhalten.

Vielleicht kann mir jemand sagen wo mein Denkfehler liegt.

armin