2010-12-06 11 views
5

Araştırma yaptım, ancak öznitelikleri kullanırken yalnızca çözümler buldum.XSL, öznitelikleri kullanmadan değere bağlı olarak düğüm sayısını saymayı nasıl sayar?

Yakın bir zamanda XSL üzerinde çalışmaya başladım. Xml dosyasını html dosyasına dönüştürmek için kullanmak istiyorum. Ayıklamak istediğim veriler, kaç düğümün belirli bir değere sahip olduğunu göstermelidir.

<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> 

ne bir dışarı olarak istediğiniz geçerli:: (Başarısız numarası) 1 (geçiş sayısı)

herhangi bununla bana bir el verebilir

XML yapısı aşağıdaki gibidir görev ? Belki

cevap

11

:

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

. Çok teşekkürler beyler! – 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

Çalışıyor. Çok teşekkürler beyler! – Artur

+0

Harika! Cevap kabul etmeyi unutmayın –

3

Bu stil:

<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> 

Çıktı: Çalışır

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

Teşekkür ederim Alejandro! – Artur

+1

@Artur: Çok iyisiniz. –

İlgili konular