XSLT
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
all
aufbereiten
ausgeben
baumstruktur
code
datei
datum
doppelten angaben
folgendem prinzip
form
jahr
jemand
publikation
publikationsliste
tab
tip
ungeordneten liste
verschachtelten schleife
vorteil
zusammenfassung
-
Ich stelle zur Zeit eine Publikationsliste zusammen, die im XML-Vormat gespeichert ist nach folgendem Prinzip:
<publication> <year>1975</year> //Jahr <title>Distribution of I-dont-know-what</title> //Titel <pdf language="en">VINITI</pdf> //Teil des PDF-Pfads, mit Sprache der Datei <coauthors> // Co-Authoren <author>Os S.I.</author> <author>Hallo D.U.</author> </coauthors> <where>ISTI Vol. 1234567</where> // Erscheinungsort </publication>
Ich hab das mal mit irgendwelchen Daten gefüllt.
Ich möchte nun diese ganzen Publikationen in einer ungeordneten Liste ausgeben, in Form einer Baumstruktur (Ohne das XML hab ich das geschafft, also direckt mit HTML und JS).
Dabei sollen immer die Jahre Zusammengefasst werden.
Also 1975 -> Publikation 1, Publikation 2
1976 -> Publikation 1,...
Ich habe es mittlerweile mit XSLT geschafft das ganze in gewünschte Form umzuwandeln...zuminedst fast. Die Zusammenfassung der Jahre habe ich nicht hinbekommen.
Hier der Code:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Publikationen</title> </head> <body onload="init()"> <ul id="byyear"> <xsl:for-each select="publications/publication"> <li> <xsl:value-of select="year" /> <ul> <li> <xsl:value-of select="title" /> <a><xsl:attribute name="href">pdf/<xsl:value-of select="year" />/<xsl:value-of select="pdf" />.pdf</xsl:attribute><img src="pdf.gif" width="25" height="25" alt="PDF" /></a> <ul> <li> <span> <span>Coauthors</span>: <xsl:for-each select="coauthors/author"> <xsl:value-of select="." /> <xsl:if test="position()!=last()">,</xsl:if> <xsl:text> </xsl:text> </xsl:for-each> </span> <span> <span>Published in</span>: <xsl:value-of select="where" /> </span> </li> </ul> </li> </ul> </li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet>
Jetzt wird das aber in der Form
1975 -> Publikation 1
1975 -> Publikation 2
1976 -> Publikation1
ausgegeben.
Kann mir jemand einen Tipp geben, wie ich es schaffe die Jahre zusammenzufassen?
mfg
€: Kann ich irgendwie den Code so formatieren, dass er auch hier mit Tabs angezeigt wird? Ich glaube so versteht man nichts...
Beitrag geändert: 29.12.2008 19:57:31 von nikic -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich würde dann das XML anders aufbereiten:
<publications> <publication year="1975"> <newpublication> <title>...</title> ... </newpublication> <newpublication> <title>...</title> ... </newpublication> </publication> </publications>
Dann kannst du mit einer verschachtelten Schleife (1. All publications durchgehen 2. alle newpublications durchgehen) das wie gewünscht ausgeben. Das wäre jedenfalls spontan gesagt die einfachste Möglichkeit. Der Vorteil hierbei ist auch, dass man keine doppelten Angaben (in dem Fall mehrfach das gleiche Jahr) hat. -
Das wollte ich eigentlich auch so machen.
Jedoch möchte ich auch andere Sortierungen anbieten, also nicht nur nach Jahr, sondern auch nach Titel zum Beispiel. Aber wenn ich mir das nochmal überlege sollte das ja eigentlich auch noch möglich sein.
Danke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage