xml & xslt-oblig.pdf

Download Report

Transcript xml & xslt-oblig.pdf

Livingston Måke- en bok av Richard Bach.
Obligatorisk oppgave i xml/ xsl
Huin 205- høst 2004
Siv Hansen, [email protected]
1 Om oppgaven
Jeg har valg å skrive kapittel en fra Richard Bachs bok om Måken Jonathan. Boken hørte jeg
første gang da jeg gikk på ungdomsskolen i -86. Den gjorde voldsomt inntrykk på meg.
Dengang, som nå, var ungdommens skjebne å ”passe inn” og være som alle andre, mens
Jonathan fikk meg til å tenke annerledes. Han er en tøff måke som tør å gjøre det han anser
som viktig, både for seg selv og for flokken- og flyvningen hans gjør han like mye for at de
andre måkene skal kunne nyte godt av godene han oppnår ved å kunne fly som en falk. Han
blir utstøtt fra flokken og til og med foreldrene hans vender han ryggen, men Jonathan gir
ikke opp trass massiv motstand fra flokken og han blir jaget bort.
Begrensningen på tusen ord var vanskelig å oppfylle. Jeg har valgt å kode størsteparten av
kapittel en fra Richard Bachs bok, selv om det ble noen flere ord. Jeg fant det ikke naturlig å
dele opp teksten, siden den da ville blitt løsrevet fra en kontekst og blitt meningsløs og platt.
Ved å kode en så stor del av kapittel en som jeg har gjort får man inntrykk av måken
Jonathan, hans tankemåte og viljestyrke.
2 Om struktur og tagging av xml- dokumentet- bok.xml
Det første jeg gjorde da jeg begynte med teksten var å se etter struktur og rytme.”Måken
Jonathan” er en bok og den er inndelt i kapitler. Hvert kapittel er inndelt i avsnitt og av og til
bryter teksten til bittesmå avsnitt- som om noe skal understrekes. Jeg har valgt å bygge
dokumentet mitt opp med <bok> som rotelement. Rotelementet inneholder to store
underelementer, <metadata> og <tekst>. Metadata inneholder tittel på boka, forfatter,
utgivelsesår og forlag sant begrunnelsen for hvorfor jeg valgte denne teksten, mitt navn og
min epostadresse. Så kommer selve teksten i taggen <tekst>. Siden inndelingen er kapittelvis
har jeg laget et underelement <kapittel> som har attributtet nummer. Deretter følger <avsnitt>
og <lb> Strukturen med <kapittel><avsnitt><lb/></avsnitt></kapittel> er valgt fordi den vil
passe til alle videre kapittel i boka og dermed kan alle kapitler valideres etter samme skjema.
(se nesten punkt)
Innebygget i xml- dokumentet har jeg laget en elementdeklareringsliste- et internt DTD
(Document Type Defintion) som deklarerer to elementer, &navn og &kortnavn, henholdsvis
”Jonathan Livingston Måke” og ”Jonathan Måke”. I teksten kan jeg deretter bruke &navn;
eller &kortnavn; når jeg har behov for å skrive navnet til måken. Fordelen med å bruke
element i stedet for å skrive tekst direkte i xml- dokumentet er hvis innholdet skulle endre seg
vil jeg kunne oppdatere et sted og det ville gjenspeilet seg i dokumentet. Alternativet ville
vært å redigere dokumentet hver gang denne tekststrengen forekom.
3 Om valideringen av dokumentet- bok.rng
Jeg har valgt å bruke et RelaxNG- Schema for min validering av xml- dokumentet mitt siden
jeg syns det er mer oversiktlig enn Pizzachef sine valideringsalternativer. I RelaxNG kan jeg
bestemme mine egne elementer og definere et mønster som xml- dokumentet mitt skal følge,
verken mer eller mindre. Pizzachefens TEI er stor og uoversiktlig og jeg syns jeg har mer
kontroll over valideringen av dokumentet mitt ved å bruke Relax.
Høynivådefineringen av <bok> inneholder referanser til alle videre elementer, <metadata> og
<tekst>. Deretter er <metadata> definert videre med referanser til metadatas underelementer.
Disse har en fast rekkefølge, gitt av rekkefølgen på referansene under elementet <metadata>.
Videre er elementet <tekst> definert. <tekst> inneholder kun <kapittel> som underelement.
Her kan det være en eller flere, i dette tilfellet ett. <kapittel> har underelementene <avsnitt>
og <lb/>. Disse kan også være en eller flere, de er også valgfri- vises ved kodeordet <choice>,
det vil si at et kapittel trenger ikke ha både <avsnitt> og <lb/>, men kan ha begge. Elementene
kan også brukes i valgfri rekkefølge, <avsnitt> og <lb/> om hverandre. På lavnivådefinering
av elementene inneholder de fleste <text/> bortsett fra <lb/> som er <empty/>, dvs et tomt
element.
4 Om utput og stylesheet- bok.xsl
Jeg har laget et xsl- stylesheet for å transformere xml- dokumentet til html. Dette stylesheetet
viser strukturen som finnes i et standard html- dokument;
<html>
<head>
<title> </title>
</head>
<body></body>
</html>
Elementet title vises i tittellinjen i browseren når siden vises, og I dette elementet har jeg
henvist til entiteten &navn; fra den interne DTD’en. Videre følger attributter for elementene
tabell, tekst, overskrift3 og tittel. Disse attributt-settene kan hentes frem ved å vise til attributt-
settets navn. Jeg har satt en bakgrunnsfarge på <body> ved å vise til attributtet bgcolour og
sette verdien av denne til en blåfarge vist ved en hexadecimal. Inne i body- elementet bruker
jeg en tabell med en tabellrad og en tabellcelle for å vise innholdet fra <kapittel>. <avsnitt> er
formatert med attributtsettet ”tekst”, som har en font, en font- size og en font- type. For å nå
de forskjellige elementene fra taggene i xml- dokumentet bruker jeg
value-of select=”det_jeg_velger” eller
apply-templates select=”veien_fra_roten_og_ned_til_elementet”
Til sist har jeg brukt taggen <xsl:text> som gjør at jeg kan skrive inn tekst i stylesheetet som
vises ved transformasjonen. Helt til sist har jeg satt inn en epostlenke, ved å bruke
<element name=”a”><xsl:text>mailto:</xsl:text><value-of select=”/bok/metadata/kodet_av”/><xsl:element>
Dokumentene i innleveringen, bok.xml, bok.rng og bok.xsl er validert og er “well- formed”
og “valid”. Jeg har også kjørt transform- scenario på xml- filen og html- siden som genereres
ser ut slik jeg hadde tenkt.
5 Referanser:
Richard Bach Måken Jonathan 9.utgave 2004, Oslo, J.W. Cappelens Forlag AS
Michael Fitzgerald Learning XSLT 1st ed. 2003, Sebastopol, O’Reilley & Associates, Inc
Erik T. Ray Learning XML 2nd ed. 2003, Sebastopol, O’Reilley & Associates, Inc
Heather Williamson XML: The Complete Reference 1st ed. 2001, Berkley, Osborne/ McGrawHill