2010-12-06 2 views
5

Ich habe Nachforschungen angestellt, aber ich habe nur Lösungen gefunden, wenn ich mit Attributen arbeite.XSL wie Anzahl der Knoten abhängig von Wert ohne Attribute zu zählen?

Ich habe vor kurzem begonnen, XSL zu studieren. Ich möchte es verwenden, um meine XML-Datei in HTML eins zu verwandeln. Die Daten, die ich extrahieren möchte, sollten darstellen, wie viele Knoten einen bestimmten Wert haben.

XML hat folgende Struktur:

<Tests> 
    <Test> 
     <TestName> a </TestName> 
     <Date> 12.11.10 </Date> 
     <Result> Fail </Result> 
    </Test> 
    <Test> 
     <TestName> b </TestName> 
     <Date> 13.11.10 </Date> 
     <Result> Fail </Result> 
    </Test> 
    <Test> 
     <TestName> c </TestName> 
     <Date> 14.11.10 </Date> 
     <Result> Pass </Result> 
    </Test> 
</Tests> 

, was ich als wollen ist: 2 (Anzahl der Fehler) 1 (Anzahl der Pässe)

jede mir eine Hand mit diesem geben könnte Aufgabe?

Antwort

11

Vielleicht:

<xsl:value-of select="count(Tests/Test[normalize-space(Result)='Fail'])" /> 
+0

Es funktioniert. Vielen Dank, Jungs ! – Artur

2
<xsl:value-of select="count(/Tests/Test/Result[normalize-space(text()) = 'Fail'])" /> 
<xsl:text> (number of Fails)</xsl:text> 

<xsl:value-of select="count(/Tests/Test/Result[normalize-space(text()) = 'Pass'])" /> 
<xsl:text> (number of Passes)</xsl:text> 
+0

Es funktioniert. Vielen Dank, Jungs ! – Artur

+0

Großartig! Vergiss nicht, eine Antwort zu akzeptieren –

3

Dieses Sheet:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:key name="kTestByResult" match="Test" use="normalize-space(Result)"/> 
    <xsl:template match="/"> 
     <xsl:value-of select="concat(count(key('kTestByResult','Fail')), 
            ' (number of Fails) ', 
            count(key('kTestByResult','Pass')), 
            ' (number of Passes)')"/> 
    </xsl:template> 
</xsl:stylesheet> 

Ausgang:

2 (number of Fails) 1 (number of Passes) 
+1

Danke Alejandro! – Artur

+1

@Artur: Du bist willkommen. –

Verwandte Themen