2009-04-10 13 views
1

Meine Frage ist: XSLT verwenden, wie die Gesamtzahl der QUOTE-Tag zu zählen (siehe den Beispielcode unten) müssen Das Ergebnis in HTLM exportiert werden, wird es wie folgt angezeigt: Es befinden sich insgesamt 6 ZitateWie kann die Gesamtzahl der Angebote in XSLT gezählt werden?

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="text.xsl" ?> 

    <quotes> 
     <quote>Quote 1 </quote> 
     <quote>Quote 2</quote> 
     <quote>Quote 3</quote> 
     <quote>Quote 4</quote> 
     <quote>Quote 5</quote> 
     <quote>Quote 6</quote> 
    </quotes> 

ich versuche schon diesen XSLT-Code, aber es funktioniert nicht:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     exclude-result-prefixes="xs" 
     version="2.0"> 
    <xsl:template match="/"> 
     <xsl:value-of select="count(//quote)"></xsl:value-of> 
    </xsl:template> 

</xsl:stylesheet> 

Würden Sie mir bitte durch dieses Problem helfen? Danke

+0

Hinweis: wahrscheinlich wissen Sie nicht, dass Sie die beste Antwort akzeptieren können - indem Sie auf das OK/Accept-Zeichen klicken, das neben der Antwort angezeigt wird :) –

Antwort

0

es scheint in Firefox 3 und IE6 gut zu funktionieren. Weitere Informationen zu Ihrer Einrichtung

3

Ihr XPath Ausdruck, obwohl nicht sehr effizient, ergibt das richtige Ergebnis.

Wenn die Transformation mit Saxon 9.1.0.5J ausgeführt wird, ist das Ergebnis:

<?xml version="1.0" encoding="UTF-8"?>6 

Das Problem scheint zu sein, dass dies eine XSLT 2.0 Transformation (was es nicht sein muss !), und Sie scheinen zu versuchen, es in einem Browser auszuführen. Leider unterstützen heutige Browser (noch) nicht XSLT 2.0.

Die Lösung besteht darin, einfach die Version in 1.0 zu ändern.

Sie benötigen auch den XML-Schema-Namespace für diese Umwandlung nicht.

Wenn sich die Struktur des bereitgestellten XML-Dokuments nicht ändert, wird ein effizienterer XPath-Ausdruck verwendet (weil die Verwendung der Abkürzung // den gesamten (Teil-) Baum beginnend am obersten Elementknoten überprüft) die folgende sein:

count(/*/quote) 

Putting alles zusammen bekommen wir die folgende Transformation:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> 
<xsl:output method="html"/> 

    <xsl:template match="/"> 
     <xsl:value-of select="count(/*/quote)"/> 
    </xsl:template> 
</xsl:stylesheet> 

und erzeugt die gewünschtes Ergebnis.

+0

OK, es funktioniert, vielen Dank –

Verwandte Themen