Vorige | Home | Slides

 

XML 2010: Eindopdracht

Dit is de eindopdracht die hoort bij het vak XML 2010, dat gegeven wordt aan de Faculteit der Letteren van de Rijksuniversiteit Groningen.

Voor deze opdrachten is begeleiding aanwezig op dinsdagen tussen 15:00 en 17:00 en op woensdagen tussen 11:00 en 13:00 in zaal 13.0102C. Om in zaal 13.012C op de computers te kunnen werken, heb je een Linuxaccount nodig. Neem contact op met de docent (erikt(at)xs4all.nl) als je zo'n account nog niet hebt.

Je mag de opdrachten ook thuis of op een andere computer maken. Hou er wel rekening mee dat je soms zal moeten inloggen op de prakticumserver siegfried.let.rug.nl . Dat kan bijvoorbeeld met 1 van de programma's winscp, putty of ssh.

De deadline voor het inleveren van de resultaten van deze opdracht is maandag 25 oktober 2010, 09:00. Plaats de resultaten van jouw opdracht op Nestor.

Deze opdracht bevat vier vragen. Vraag 2 is vier punten waard en vragen 3 en 4 zijn beide elk twee punten waard. Daarnaast kunnen nog twee punten worden verdiend met oplossingen die beter of uitgebreider zijn dan de andere ingeleverde oplossingen.


Opdracht

Een RSS-feed is een XML-pagina die een samenvatting geeft van een website of een deel van een website. Alle grote nieuwswebsites hebben tegenwoordig een RSS-feed. In deze opdracht werk je met de XML-bestanden van twee van deze RSS-feeds (naar keuze).

  1. Kies twee RSS-feeds van een grote Nederlandse nieuwswebsite, bijvoorbeeld van Algemeen Dagblad, De Pers, Metro, NRC, nu.nl, Parool, Spits, Telegraaf, Trouw of Volkskrant. Voorbeeldbestanden van de verschillende feeds kan je ook vinden in de directory /home/erikt/class/xm10/opdracht9. Je mag ook andere RSS-feeds gebruiken dan de hier genoemde maar neem wel even contact op met de docent om dit te melden voordat je ermee gaat werken.

  2. Schrijf 1 of meerdere XSLT-programma's waarmee je de twee RSS-feeds omzet in XML-documenten die op een redelijke manier gepresenteerd worden in een browser. Gebruik dezelfde presentatiestijl voor beide bestanden. Zorg ervoor dat de belangrijke informatie uit de RSS-feeds, artikeltitels, artikeltekst en eventuele bijbehorende links, ook in jouw XML-document komen te staan

  3. Zorg er met de XSLT-scripts voor dat enige extra informatie wordt geplaatst in het uiteindelijke XML-document. Vermeld in ieder geval het aantal artikelen in de RSS-feed en, indien je er via de feed achter kunt komen, de datum en tijd van het meest-recente artikel.

  4. Schrijf een DTD of een XML-schema dat jouw XML-bestanden (de einduitvoer van de XSLT-programma's) beschrijft. Zorg ervoor dat de structuur van de XML-bestanden voldoet aan de DTD of het XML-schema.

Hou er rekening mee dat jouw XSLT-programma's en DTD/XML-schema zullen worden getest met documenten van een andere datum. Test daarom zelf ook met documenten van verschillende dagen.

Tips

  1. Sommige van de RSS-feeds plaatsen veel data op 1 regel. Je kan de data beter leesbaar maken door het te verdelen over meerdere regels. Gebruik hiervoor het programma xml2xml op de prakticummachines. Sla het bestand op en zet het vervolgens om naar het nieuwe formaat met het volgende commando in een terminalwindow:

    /home/erikt/bin/xml2xml < oud.xml > nieuw.xml
  2. Je kan de entities &lt; en &gt; in de tekst omzetten naar < en > door in XSLT de volgende constructie te gebruiken:

    <xsl:value-of select="..." disable-output-escaping="yes"/>

    Plaats dan de naam van het element met de tekst op de plaats de drie puntjes. Het attribuut disable-output-escaping="yes" zorgt voor de gewenste omzetting van de entities (voorbeelden).

  3. In deze opdracht moet je met XSLT-instructies een verwijzing naar een CSS-stijlbestand toevoegen aan de uitvoer van XSLT. Hiervoor heb je de volgende instructie nodig (bron):

    <xsl:processing-instruction name="xml-stylesheet">
     href="MIJNSTIJLBESTAND.css" type="text/css"
    </xsl:processing-instruction>

    Plaats hier jouw stijlbestand op de plek van MIJNSTIJLBESTAND.css

  4. Hoe een link in een XML-document moet worden geplaatst, staat op slide 27 van week 3 (pdf). Een variabele waarde kan aan het attribuut xlink:href worden toegekend met de code:

    <link ...>
     <xsl:attribute name="xlink:href">
     LINKTEKST
     </xsl:attribute>

    Vervang LINKTEKST door de waarde die je aan het href-attribuut wilt geven (meer informatie).

  5. Als je in een XSLT-programma elementen wil gebruiken uit een andere namespace dan moet je die namespace eerst bovenin het stylesheet definiëren, bijvoorbeeld voor de namespace dc:

    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:dc="http://purl.org/dc/elements/1.1/">

    Als je dat niet doet dan geeft xsltproc een foutmelding.


Plaats al jouw bestanden in 1 tekstbestand met de naam 9-studienummer.txt en lever dit bestand in via Nestor voor maandag 25 oktober 2010, 09:00
Last update: October 13, 2010. erikt(at)xs4all.nl