Axel Hoogestraat: Alle Elemente im Baum zählen

Hallo,

ich habe wieder ein kleines XSL Problem. Mit dem Befehl
<xsl:number level="any" count="element"> werden alle Elemente "element" gezählt, die vor dem aktuellen Knoten liegen und auf der gleichen Ebene, wenn ich nicht irre. Ich möchte aber gleich zu beginn des Dokuments (also bei <xsl:apply-template match="/" />) wieviele Knoten des Types vorhanden sind. Das Problem ist, die können auch verschachtelt sein.

Bsp.:
<root>
  <element>
    <irgendwas />
    <element>
      <was_anderes />
    </element
    <element>
      <nochwas />
    </element>
  </element>
</root>

Wie kann ich der Struktur das Gesamtvorkommen von "element" zählen?

Vielen Dank im Voraus
Schöne Grüße
Axel

  1. Hallo,

    Wie kann ich der Struktur das Gesamtvorkommen von "element" zählen?

    <xsl:value-of select="count(root//element)"/>

    MfG, Thomas

    1. Hallo,

      vielen Dank. Hat (so ähnlich) funktionier. Zwar hat
      count(root//element) nicht den erwünschten Erfolg gebracht, aber
      count(//element) klappt.

      Nochmals Danke,
      schöne Grüße
      Axel

      1. Hallo,

        vielen Dank. Hat (so ähnlich) funktionier. Zwar hat
        count(root//element) nicht den erwünschten Erfolg gebracht, aber
        count(//element) klappt.

        Das kommt auf den (nicht genannten) Kontext an. Ich erhalte mit dieser Vorlage den Wert 3:

          
        <xsl:template match="/">  
          
          <xsl:value-of select="count(root//element)"/>  
          
        </xsl:template>
        

        MfG, Thomas

        1. Hallo,

          das ist merkwürdig. Mein Dokument ist genauso aufgebaut. Nur, das ich "element" noch eine Ebene tiefer geschachtelt habe, aber daran kanns ja nicht liegen. count(root//element) hat bei mir 0 bzw. nichts geliefert.
          Ich denke mal, dass das eher ein einem Bug im Parser liegen könnte. Bzw. einfach eine unterschiedliche Interpretation seitens des Parser. Ich verwende Saxon, glaub ich ;-).

          Schöne Grüße
          Axel