2016-03-30 10 views
2

ich zur Liste vergleichen möchten, dass das Datum größer als 7 May.Here hat, ist, was ich versucht habe:Wie mithilfe von Xslt alle Filme Datum xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:template match="/"> 
    <html> 
    <body> 
     <table border="1"> 
     <xsl:for-each select="cinema/movie"> 
     <xsl:if text="date>7 May"> 
     <tr> 
     <td> 
      <xsl:value-of select="title"/> 
     </td> 
     </tr> 
     </xsl:if> 
     </xsl:for-each> 
     </table> 
    </body> 
    </html> 
    </xsl:template> 
    </xsl:stylesheet> 

Wie dieses Problem zu beheben? Vielen Dank.

EDIT

<?xml version="1.0"?> 
    <?xml-stylesheet type="text/css" href="movie.css" ?> 
    <cinema> 
    <movie> 
    <title>The hobbit</title> 
    <date>9 July</date> 
    <duration> 134 minutes</duration> 
</movie> 
</cinema> 
+0

Bitte zeigen Sie uns ein Beispiel für die Eingabe. –

+0

Ich habe die obige Frage bearbeitet. –

+0

Ist der 2. Januar nach dem 28. Dezember? –

Antwort

3

XSLT 1.0 hat kein Konzept für Termine - und 9 July ist kein sowieso Datum. Wenn Sie den angegebenen Wert auf 7. Mai vergleichen wollen versuchen, so etwas wie (von jede Jahre!):

... 
<xsl:for-each select="cinema/movie"> 
    <xsl:variable name="d" select="substring-before(date, ' ')" /> 
    <xsl:variable name="mmm" select="substring(substring-after(date, ' '), 1, 3)" />  
    <xsl:variable name="m" select="string-length(substring-before('JanFebMarAprMayJunJulAugSepOctNovDec', $mmm)) div 3 + 1" /> 
    <xsl:if test="$m + 0.01 * $d > 5.07"> 
     <tr> 
      <td> 
       <xsl:value-of select="title"/> 
      </td> 
     </tr> 
    </xsl:if> 
</xsl:for-each> 
... 
+0

Wenn XSLT in einem Prozessor verwendet wird, der Erweiterungsfunktionen (wie Xalan/Standard-Java-Implementierung) unterstützt, die möglicherweise helfen. Sagen wir, wir rufen eine Funktion auf, die das Datum nimmt und die Millisekunden seit der Epoche ausgibt. Macht den Vergleich von Daten einfach. –

+0

@G_H Ich habe Angst, dass ich deinen Standpunkt nicht verstanden habe. –

+0

Ich habe einfach eine Bemerkung zu Ihrer Antwort hinzugefügt, um festzustellen, dass, wenn die XSLT innerhalb eines Prozessors ausgeführt wird, der Erweiterungsfunktionen zulässt, diese das Datum/Uhrzeit-Parsing bereitstellen können, das XSLT 1.0 fehlt. Da es Annahmen über die Umgebung macht, in der der Fragesteller arbeitet, war das nicht als Antwort an sich nützlich. –