2016-08-12 2 views
0

Ich muss Nicken einer XML-Datei zählen. Die Nicken beginnen alle mit einem bestimmten Charakter ('S'). Wie kann ich all diese Nicken zählen, die mit "S" beginnen?XSL 1.0: Count Nods mit spezifischen Anfang des Knotennamens

Zum Beispiel habe ich diese Datei

<root> 
    <G_Group1> 
     <S_DAS> 
      <D_Name>Boot</D_Name> 
      <D_Speed>10</D_Speed> 
     </S_DAS> 
     <S_GRU> 
      <D_Name>Bike</D_Name> 
      <D_Speed>3</D_Speed> 
     </S_GRU> 
     <G_HEL> 
      <S_LOR> 
       <D_Color1>Green</D_Color1> 
       <D_Color2>Blue</D_Color2> 
      </S_LOR> 
     </G_HEL> 
    </G_Group1> 
    <G_Group2> 
     <S_HUZ> 
      <D_Name>Boot</D_Name> 
      <D_Speed>10</D_Speed> 
     </S_HUZ> 
     <S_HUZ> 
      <D_SPE>Bike</D_SPE> 
     </S_HUZ> 
     <S_LIL> 
      <D_BER>Green</D_BER> 
      <D_KLA>Blue</D_KLA> 
     </S_LIL> 
    </G_Group2> 
</root> 

in diesem Fall i 6.

S_DAS, S_GRU, S_LOR, S_HUZ, S_HUZ, S_LIL 

jemand mir zählen würde helfen können, können?

Vielen Dank im Voraus Florian

+0

Willkommen bei SO ! Kannst du uns bitte zeigen, was du bisher versucht hast? –

+0

Eingabe-XML ist nicht korrekt formatiert, legen Sie das Stammelement fest. –

+0

Danke. Eigentlich weiß ich nicht, wie ich sie zählen soll, wenn ich nicht weiß, in welcher Tiefe sie sind. Ich benutze bereits zählen wie folgt: . Das wäre ok und dann könnte ich alle Variablen zusammenfassen. Aber ich werde nicht wissen, in welcher Tiefe der Knoten beginnend mit "S" wird. – Florian

Antwort

1

Elemente, deren Name mit "S" beginnt zu zählen, können Sie verwenden:

count(//*[starts-with(name(), 'S')]) 
0

Graf wie folgt aus:

<xsl:template match="/"> 
    <xsl:value-of select="count(descendant::*[substring(name(),1,1)='S'])"/> 
</xsl:template> 
+0

großartige Rudramuni TP. Das sieht gut aus, ich werde es versuchen und Feedback geben. gibt es auch einen Ansatz zu thsi mit der generierten Ausgabedatei? Ich habe etwas gelesen über RTF, aber soweit ich verstanden habe, ist dies nur möglich, wenn Sie Version 1.1 – Florian

+0

verwenden, funktioniert es nicht für mich 'code \t \t \t \t \t \t \t Florian

+0

java -jar "saxon9h.jar" > wie diese Befehlszeile muss geben. –