kostenloser Webspace werbefrei: lima-city


XSLT

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    nikic

    Kostenloser Webspace von nikic, auf Homepage erstellen warten

    nikic hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    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.
  4. Autor dieses Themas

    nikic

    Kostenloser Webspace von nikic, auf Homepage erstellen warten

    nikic hat kostenlosen Webspace.

    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
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!