. In XML (en SGML) horen ze formeel echter - anders dan in HTML vaak het geval is - geen betrekking te hebben op de opmaak, maar alleen op inhoudelijke of functionele eigenschappen van het betreffende element. In deze beknopte inleiding zullen we nog niet verder op het gebruik van attributen ingaan.
8
Handleiding XML
4
De praktijk
We weten nu globaal hoe een DTD wordt opgebouwd en hoe die er dient uit te zien. Omdat er allerlei verschillende programma’s zijn waarmee DTD’s (of Schema’s) gemaakt en op syntax gecontroleerd kunnen worden of waarmee XML-documenten gemaakt of gecodeerd kunnen worden, zullen we hier alleen een globaal overzicht geven van het te volgen traject. 1. Een DTD is gewoon een ASCII-bestand en kan óf met een gewone editor (zoals Kladblok) óf met een speciale DTD-editor worden aangemaakt. 2. Nadat dat bestand is gemaakt, moet met een XML-parser gecontroleerd worden of het aan de syntax (de grammatica) van DTD’s voldoet. In veel XML-editors is zo’n parser of validator ingebouwd. Als zo’n parser foutmeldingen geeft, zul je eerst de DTD op grond daarvan moeten corrigeren. (Of de DTD ook inhoudelijk precies voorschrijft wat je, gezien de structuur van je document, zou willen, kan zo’n programma uiteraard niet beoordelen). 3. Voor gebruik van sommige XML-editors moet de DTD eerst worden “gecompileerd”. Dat compileren houdt in dat een binair bestand wordt gegenereerd, waaruit de editor eenvoudig de documentstructuur kan afleiden, d.w.z. welke XML-elementen in welke onderdelen van een document wel of niet, in welke volgorde en hoe vaak mogen voorkomen. Bij veel huidige XML-editors blijft zo’n expliciete compileerstap vaak achterwege en wordt de DTD gewoon “ingelezen”. 4. Nadat de DTD is gecontroleerd (en eventueel gecompileerd), kunnen met een XMLeditor nieuwe documenten worden aangemaakt, inclusief aan te brengen XML-codes, of kunnen bestaande ongecodeerde documenten worden ingelezen om ze te coderen. Daarbij wordt meestal automatisch gecontroleerd of ze aan de syntax van XML voldoen en in veel gevallen ook meteen of ze zich wel aan de structuur van de betreffende DTD houden. Tijdens het editen kan dat bijvoorbeeld door alleen die tags als keuzemogelijkheid aan te bieden, die op de betreffende plaats in het document zijn toegestaan. Hoe dat laatste precies gebeurt, kan van editor tot editor verschillen. Niet elke editor is ook even “precies” en streng bij het suggereren welke tags op welke plaatsen in een document wel of niet gebruikt mogen worden. Ook eventueel al op andere wijze gecodeerde documenten kunnen achteraf door de XML-parser van zo’n editor worden gecontroleerd. 5. De gecodeerde documenten kunnen in principe gewoon worden opgeslagen. Wat er daarna nog mee moet gebeuren, hangt namelijk af van de toepassingen die zijn voorzien. Om een document op papier af te drukken, moet het bijvoorbeeld worden ingelezen in een Desk-top Publishing programma, waarbij met behulp van een stylesheet een opmaak voor de verschillende document-elementen wordt vastgelegd. Ook kan het zo rechtstreeks in een PDF-document worden omgezet. Voor publiceren op het web zou - met behulp van een hulp-programma - een conversie van XML- naar HTML-codes kunnen plaatsvinden. De huidige generatie web-browsers kan gecodeerde XMLdocumenten, in aanwezigheid van een stylesheet, ook al meteen als web-pagina’s op het scherm tonen. Internet Explorer en Firefox accepteren hiervoor stylesheets die gespecificeerd zijn in de XSL-taal (XML Stylesheet Language) of de ook al van HTML bekende CSS (cascaded stylesheets). Met XSL kunnen (gedeeltes van) documenten in principe ook naar RSS-formaat (ook een XML-toepassing) geconverteerd worden. Voor nog andere toepassingen zullen documenten worden opgeslagen in een database of kan een retrievalprogramma zodanig worden afgericht dat verschillende elementen uit de XML-structuur als afzonderlijk te doorzoeken velden geïndexeerd worden. NB: Voor het ontwerpen van XSL stylesheets zal overigens meestal iemand met echte programmeerervaring ingezet moeten worden.
9
Handleiding XML
Fig. 5 Schematische weergave van de bovenbeschreven stappen
5
De DTD in de computer aanmaken en controleren 5.1
DTD (af)maken
Voor de hier gegeven opdracht kun je uitgaan van een DTD die (als voorbeeld) al de specificaties voor een klein deel van de documentstructuur bevat, maar die nog verder afgemaakt moet worden. Haal dus eerst die deels voorgebakken DTD op. Kopieer het bestand artikel.dtd vanaf het MIM-intranet naar je eigen schijfgebied of USB-stick (https://intra.mim.hva.nl/mod/dtd/d018/artikel.dtd). Je kunt dit bestand verder bewerken en aanvullen door het te openen: - in Kladblok (NB: kies daarvoor Bestandstypen: Alle bestanden), of (liever) - in de speciale XML-editor XMLpad (zie hoofdstuk 11 hoe dit te installeren) Hier zullen we verder het werken met XMLpad beschrijven.
Start XMLpad op Kies uit de menubalk {File} – {Open} Selecteer de DTD-file die je wilt bewerken, aanvullen of controleren. Bij het aanvullen of bewerken van de geopende DTD zie je in het linker deel van het scherm meteen al een soort boomstructuur van de DTD waarmee je bezig bent.
Maak je DTD verder af. Daarbij komt het programma steeds al met suggesties wat je zou willen intikken, onder meer ook voor (alleen al eerder gedefinieerde) elementen die je wellicht wilt verwerken in nieuwe element-definities. Als je fouten tegen de syntax maakt zie je dat al in een speciaal mededelingenvenster onder je tekst. (Maar ook aan het eind zullen we nog controleren of alles goed gedaan is – zie volgende paragraaf). Vul het bestand verder aan met de, uit je boomstructuur af te leiden, ontbrekende elementdeclaraties, volgens de in paragraaf 3 gegeven aanwijzingen. Sla, als je daarmee klaar bent, de DTD weer op (onder dezelfde naam).
10
Handleiding XML
5.2
De DTD controleren (“parsen”)
Als je je DTD af hebt, moet je die nog laten controleren (of “valideren”). Dat houdt in dat een XML parserprogramma controleert of hij voldoet aan de syntax van XML. Als dat niet het geval is, geeft zo'n programma foutmeldingen met (summiere) aanduidingen waar de fouten zitten. Zoiets moet je zeker doen als je je DTD oorspronkelijk in een gewone editor als Kladblok hebt aangemaakt. • Kies uit de menubalk van XMLpad: {DTD} – {Validate} • Als er nog problemen zijn, zul je foutmeldingen krijgen, met vermelding van regelnummers. (Overigens kan de echte fout soms wel al 1 of 2 regels eerder zitten) • Verbeter in je DTD aangetroffen fouten tot er geen enkele meer wordt aangetroffen. • Als er geen fouten zijn, wordt dit in een pop-up venster gemeld en kun je je DTD opslaan.
5.3
Eisen aan een DTD
Behalve dat een gemaakte DTD aan de XML-syntax moet voldoen (de parser mag geen fouten meer tegenkomen), moet hij uiteraard ook voldoen aan een aantal algemeen inhoudelijk/structurele eisen die voortkomen uit de specifieke aard van de te coderen artikelen. 1. Een DTD dient tot in voldoende detail te zijn uitgewerkt. Als hij niet verder gaat dan een element voor de volledige tekst van een hoofdstuk of sub-hoofdstuk, is dat niet genoeg. Immers, zelfs als je je niet wilt bekommeren om in de tekst voorkomende elementen als literatuurreferenties, opsommingen, nadrukwoorden en dergelijke, dan nog dienen, ten behoeve van de latere opmaak, tenminste afzonderlijke alinea's onderscheiden en gemarkeerd te kunnen worden. 2. Zorg dat in de lopende tekst van je alinea’s in elk geval ook een paar “semantische” elementen mogen voorkomen, die relevant zijn voor de onderwerpen waarover je artikelen wilt publiceren. 3. Als een element "lijst" of "opsomming" in een DTD voorkomt, dan moet ook dat nog verder worden uitgewerkt. De individuele "items" in zo'n lijst moeten immers met tags afzonderlijk herkenbaar gemaakt kunnen worden. Anders zou alles toch weer achter elkaar op het scherm komen. (Denk bijvoorbeeld aan de in HTML gebruikte lijsten). 4. Als je DTD een element "referentielijst" bevat, moeten ook de individuele referenties gemarkeerd kunnen worden (en dus als element in de DTD zijn gedeclareerd). Er moet namelijk herkenbaar zijn waar een nieuwe referentie begint, om die weer voor aan de regel te laten beginnen. Onderdelen binnen afzonderlijke literatuurreferenties hoeven (in dit specifieke geval) niet verder te worden uitgewerkt. 5. Voor bijna elke toepassing is het zinvol metadata aan te coderen documenten toe te kennen. Ook die mogelijkheid moet de DTD bieden.
6
XML-tags aan een document toevoegen
Het plaatje hieronder laat als voorbeeld een scherm zien van de WP-9 XML-editor. Daarin zijn na
11
Handleiding XML
12
venster linksboven laat zien dat de geselecteerde tekst op die plaats in het document, op grond van de DTD, alleen als <engels>, <merk> of
Fig. 6 Editor-scherm van WordPerfect-9
Bij het aanbrengen van XML-tags met een XML-editor is het over het algemeen aan te raden steeds “van groot naar klein” te werken; eerst de overkoepelende elementen en vervolgens pas de daarbinnen (genest) voorkomende elementen. Bij het maken van een XML-document hoef je je verder niets aan te trekken van eventueel in de tekst aanwezige extra spaties, harde returns of lege regels, want net als bij HTML, zullen verwerkende programma’s daar niets mee doen; die kijken alleen naar de tekst zelf en de aangebrachte tags. Toch enige opmaakstructuur in een XML-document aanbrengen heeft hoogstens zin voor je zelf, omdat het je, zeker als je een gewone ASCII-editor gebruikt, wat steun geeft bij het overzien van de structuur van je document.
6.1
Document coderen met een XML-editor
Hieronder worden voor twee verschillende XML-editors aanwijzingen gegeven hoe daarmee te werken. Het wordt aan de student overgelaten welk daarvan te gebruiken. Voor- en nadelen van beide: Voordelen
Nadelen
gratis, onbeperkt te gebruiken wat beperkte functionaliteit is ook een DTD-editor en -validator bestaande tekst niet direct in te voegen XMLpad tamelijk eenvoudig en "licht" programma geselecteerde stukken tekst niet te taggen bestaande tekst taggen via knip&plak zeer uitgebreide functionaliteit gratis versie 30 dagen geldig, dan betalen blokken bestaande tekst direct te taggen complexe "licence key" Oxygen ook te gebruiken voor schema's "zwaar" programma (55 [of 35] MB file) ook te gebruiken voor XSL stylesheets lang niet alle functionaliteit gebruikt
In deze handleiding zullen zullen we verder alleen aanwijzingen geven voor het gebruik van XML-pad.
Handleiding XML
Gebruik van XMLpad [Hoe je XMLpad moet installeren, is te vinden in hoofdstuk 11 van deze handleiding] • • • • • • • • •
• • • • • • • • •
•
Kopieer de platte tekst van het te coderen artikel artikel.txt vanaf het MIM-intranet naar je eigen schijfgebied (https://intra.mim.hva.nl/mod/dtd/d018/artikel.txt) . Start het programma XMLpad Kies uit de menubalk {File} – {New} Kies “XML Document” Er verschijnt een venster waarin je kunt aangeven welke DTD gebruikt moet worden. Kies onder “DTD-definition” voor “External DTD” Klik (achter “Schema File”) op [Browse] om je DTD te selecteren. Achter “Root Tag” kun je een keuzelijstje openen van alle tags uit je DTD. Selecteer daaruit het basis-element, d.w.z. de tag voor het document-type als geheel (waarschijnlijk <artikel>) Er verschijnt een leeg document met daarin al standaardbeginregels voor een XMLdocument en daaronder de open- en sluittag voor je documentstructuur <artikel> Helaas kun je je platte documenttekst niet rechtstreeks in XMLpad inlezen Open daartoe artikel.txt in het programma Kladblok Selecteer alle tekst (met je muis, of liever met de toetscombinatie Ctrl-A) en copieer die (met je muis of met de toetscombinatie Ctrl-C ) Ga terug naar XMLpad en plak de hele gecopieerde tekst (met je muis of Ctrl-V) tussen de begin- en eindtags <artikel> █ Druk achter <artikel> (dus voor het begin van de echte tekst) een paar keer op Enter om - voor de overzichtelijkheid - wat witregels te krijgen Tik onder de tag <artikel> (maar voor de ingeplakte tekst) een < Dan komt automatisch een lijstje te voorschijn met één of meer op die plaats toegestane tags , bijvoorbeeld <meta> Kies degene die je hier wilt gebruiken en tik > in om de tag af te sluiten. XMLpad zet dan ook meteen de sluittag neer Door tussen die twee tags opnieuw een < in te tikken krijg je de elementen te zien die binnen dat eerste element zijn toegestaan (binnen <meta> bijvoorbeeld
• • •
Helaas moet je nu zelf met knippen (Ctrl-X) en plakken (Ctrl-V) de relevante stukken tekst naar de juiste plek tussen de aangemaakte tags verplaatsen. Op dezelfde manier breng je ook tags voor
13
Handleiding XML
NB: Selecteren van zulke grote stukken tekst gaat het veiligst door de cursor bij het begin van die tekst te zetten en dan de toetscombinatie shift + pijltje-naar-rechts zolang ingedrukt te houden tot de hele gewenste tekst geselecteerd is. Een andere methode is een beginstukje met de muis te selecteren, vervolgens met de shift-toets ingedrukt door te scrollen en met de muis het eind van het blok aan te klikken. •
•
Achter
NB: Zorg bij het aanbrengen van tags altijd dat er minstens een spatie zit tussen de tags die je aanbrengt en de al op het scherm aanwezige tekst daarachter. Anders blijkt (FOUTJE!) het eerste woord uit die tekst in je sluittag verwerkt te worden. •
Breng zo eerst de algehele structuur van je document aan. De semantische codering – het markeren van bijvoorbeeld namen van personen of bedrijven, van vaktermen of nadrukwoorden – kun je daarna aanbrengen.
•
Je kunt (tussendoor) je bestand vast als XML-file opslaan in je eigen schijfgebied. Daarbij wordt automatisch al gecontroleerd of je bestand correct ge-tagd is. Als je nog niet helemaal klaar bent, is dat uiteraard nog niet het geval. Ondanks de resulterende foutmelding kun je het bestand dan toch opslaan.
Als je denkt helemaal klaar te zijn, is het aan te raden je hele bestand nog een keer te laten controleren: • Kies uit de menubalk {XML} – {Validate} • Corrigeer eventueel nog gesignaleerde fouten totdat het programma zegt dat je tekst foutloos is. Bij het weer openen van een eerder opgeslagen XML-file om die verder te bewerken, zul je opnieuw moeten aangeven welke DTD te gebruiken: • Start het programma XMLpad • Kies uit de menubalk {File} – {Open} • Selecteer het gewenste XML-bestand • Kies uit de menubalk {XML} – {Assign DTD} • Klik (achter “System Id”) op [Browse] om je DTD te selecteren en klik dan op [OK]. (Mocht om een of andere reden daarbij je hele tekst verdwijnen, dan blijk je die terug te krijgen met de toetscombinatie Ctrl-Z) • Daarna kun je het bestand verder bewerken.
14
Handleiding XML
6.2
Document opvragen in een webbrowser
Als je een XML-editor gebruikt voor het maken van je XML-bestanden, zal die meestal automatisch een tweetal “XML-regels” vooraan je document toevoegen (die je soms pas ziet als je de documenten in een gewone ASCII-editor zoals kladblok bekijkt). Deze regels vormen de zogenaamde “proloog” van het document. Bijvoorbeeld:
Die eerste regel van de proloog geeft aan dat het een XML-document is, dat die voldoet aan versie 1.0 van de XML-definities en dat voor het schrijven van het document een bepaalde 8-bits ASCII-code (UTF-8) wordt gebruikt. De tweede regel geeft aan welke DTD ervoor gebruikt is en waar die te vinden is. Deze regel mag overigens bijna altijd worden weggelaten, omdat vrijwel alle computerprogramma’s die verder nog iets met een XML-bestand doen, daar de DTD helemaal niet meer bij nodig hebben en dus ook niet hoeven te weten hoe die heet en waar die te vinden is. Als je een XML-document nu in een browser (Internet Explorer of Firefox) opent, weet die nog niet hoe het getoond moet worden, want je hebt nog geen verwijzing naar een voor de opmaak te gebruiken stylesheet opgenomen (en die stylesheet nog helemaal niet gemaakt). Anders dan bij HTML is voor jouw specifieke tags namelijk nog niet gedefinieerd hoe de bijbehorende tekst er zou moeten uitzien. Toch kan je het document wel al in Internet Explorer of Firefox bekijken. Alleen fungeert die nu als zogenaamde “debugger”, die de boomstructuur van je document met alle afzonderlijke takken daarin zichtbaar maakt. Open het gecodeerde bestand artikel.xml in Internet Explorer of Firefox. (NB: kies “Bestandstypen: Alle bestanden”) Door te klikken op + (plus) en - (min), zoals met de mappen in de Windowsverkenner, kun je “takken” in de documentstructuur laten open- en dichtklappen. Dat helpt je je document wat beter te overzien (en eventuele fouten in het aanbrengen van tags op te sporen, als je het document niet door een XML-editor hebt laten valideren). Kijk dus of je document nu inderdaad correspondeert met de boomstructuur die je voor je DTD bedacht had.
7
Gebruik van stylesheets
Voor het in opgemaakte vorm beschikbaar stellen van XML-documenten worden stylesheets gebruikt. Daarin wordt in principe voor elk van de in de documenten voorkomende elementen gespecificeerd in welke opmaak ze getoond moeten worden. Voor verschillende toepassingen kun je verschillende stylesheets gebruiken, zodat je uit hetzelfde document verschillende producten of presentaties kunt krijgen. Voor XML is een “taal” ontwikkeld waarmee je dergelijke stylesheet voorschriften kunt specificeren. Die eXtensible Stylesheet Language (XSL) is intussen een geaccepteerde en wijdverbreide standaard geworden. XSL stylesheets zijn er in eerste instantie voor bedoeld om XML-documenten om te zetten (te converteren) in andere soorten bestanden. Op grond van deze toepassingen van XSL zegt men dan ook wel dat het een transformatie-taal is en spreekt men van XSLT (XSL Transformaties). Zo worden ze door programmeurs ook zeer frequent gebruikt voor allerlei conversietoepassingen die helemaal niets met opmaak van documenten te maken hebben.
15
Handleiding XML
Fig. 7 - Transformatie van XML-document naar HTML op grond van een XSL stylesheet met behulp van de (gratis) utility XT van James Clark.
Met XSL kan een XML-document ook gewoon naar HTML geconverteerd worden, zodat dat document in elke web-browser getoond kan worden. In de huidige browsers kunnen XML-documenten met een XSL stylesheet ook direct al in de gewenste opmaak getoond worden. Ook voor die toepassing wordt in feite - intern in de browser - een transformatie uitgevoerd naar HTML opmaak-codes, op basis van wat de stylesheet voorschrijft. Voor opmaakvoorschriften voor browsers kan ook gebruik gemaakt worden van “Cascaded Stylesheets” (CSS), dezelfde die ook in HTML worden gebruikt.
Fig. 8 Directe presentatie van XML-document in een XML-bewuste browser op grond van een XSL of CSS stylesheet
Ook XSL is bedoeld om als echte opmaak-taal te worden gebruikt, waarmee je direct opmaak-voorschriften kunt geven, zonder alleen maar een vertaling (transformatie) naar HTML-codes te bieden - met de beperking tot alleen in HTML beschikbare opmaakmogelijkheden. Daarvoor is nu XSL-FO (XSL formatting objects) gedefinieerd. Systemen die dergelijke XSL stylesheets accepteren, veelal ten behoeve van de opmaak van gedrukte documenten, zijn in ontwikkeling. Hier zullen we nog niet op dergelijke systemen ingaan. Een speciale eigenschap van XSL is, dat een XSL stylesheet zelf ook weer een XMLdocument is (d.w.z. aan de syntax van XML voldoet). Hoewel XSL de officiële standaard voor XML stylesheets is geworden, zullen we daar nu toch geen gebruik van maken. Naast de voordelen van universele toepasbaarheid, flexibiliteit en systeemonafhankelijkheid, heeft het namelijk een belangrijk nadeel. Het is in feite een tamelijk complexe formele programmeertaal, waar je als niet-programmeur maar moeilijk vat op krijgt. Voor een beginner is zelfs het maken van een eenvoudige XSL stylesheet al vrij complex als je niet hele stukken uit andermans voorbeelden wilt overnemen. Wij zullen daarom gebruik maken van CSS stylesheets. Die hebben als voordeel dat ze een veel directer vertaling naar de gewenste opmaak bevatten, zonder de tussenstap van HTML en dat ze - mede daardoor - veel makkelijker zijn te begrijpen en toe te passen. De daaraan verbonden nadelen dat ze alleen maar voor publicatie op het web gebruikt kunnen worden en dat ze minder flexibiliteit en minder mogelijkheden bieden, nemen we dan maar op de koop toe.
16
Handleiding XML
Opdat een browser weet welke stylesheet gebruikt moet worden, moet dat in de proloog van een XML-document worden aangegeven. Koppelen aan de gewenste stylesheet gaat voor beide types op dezelfde wijze. Na de eerste regel met de XML-declaratie (zie vorig hoofdstuk), moet een regel met de stylesheet declaratie volgen. Voor een CSS stylesheet die mijnstijl.css heet, wordt dat (met voorgeschreven gebruik van vraagtekens):
Voor een XSL stylesheet met de naam echtestijl.xsl zou het zijn:
8
Gebruik van CSS stylesheets 8.1
Syntax en eigenschappen
CSS stijlbladen voor XML worden in principe volgens dezelfde regels opgebouwd als die voor HTML. Natuurlijk wel met dit verschil dat je nu niet voor de vaste HTML-elementen, maar voor de zelf bedachte XML element-tags moet specificeren hoe die opgemaakt moeten worden. Het feit dat je browser bij XML nog voor geen enkel element weet hoe dat moet worden weergegeven, zou in principe betekenen dat je voor elk element opmaakgegevens moet specificeren. De werkelijkheid is gelukkig iets simpeler. In de eerste plaats zal een element waarvoor niets gespecificeerd is in standaard lettertype en grootte worden getoond, zonder enige verder opmaak. Wat daarbij “standaard” is, is afhankelijk van de browser-instelling van de gebruiker. In de tweede plaats heb je nu ook gemak van de wat strengere, vaak hiërarchische boomstructuur van een XML-DTD, vergeleken met de veel lossere tagging in een HTML-document. Binnen de boomstructuur van een DTD (en daarmee de nesting van de tags binnen elkaar in de documenten) “erven” de elementen namelijk de eigenschappen van hun “ouders”. Dat betekent dat hetgeen je bijvoorbeeld specificeert voor het document-type <artikel> als geheel, automatisch ook voor alle andere - onderliggende - elementen van je document geldt, tenzij je daarvoor iets anders opgeeft. Zo zal alles wat je voor bijvoorbeeld een hoofdstuk
Dus voor een element
In de praktijk wordt dit voor de overzichtelijkheid vaak weergegeven/ingetikt als: kop { font-size:24pt; font-weight:bold; color:red; }
17
Handleiding XML
18
Een stylesheet kan bestaan uit een onbeperkt aantal van zulke specificaties onder elkaar. Hieronder een beperkt aantal veelgebruikte eigenschappen of specificaties. Specificaties voor tekstopmaak: eigenschap lettertype lettergrootte tekstkleur letterdikte / vet
style-specificatie font-family font-size color font-weight
cursief
font-style
letterafstand woordafstand
letter-spacing word-spacing:
voorbeeld font-family:arial,helvetica font-size:20pt color:green font-weight:800 font-weight:bold font-style:italic font-style:oblique letter-spacing:0.3em word-spacing:1em
Specificaties voor pagina- en alinea-lay-out eigenschap als (tekst)blok tonen in de regel invoegen inhoud van element niet tonen positioneren van tekstblok
style-specificatie display
positie van de bovenkant marges rondom het blok
top margin
boven-marge linker-marge breedte van tekstblok (extra) kantlijn links in kantlijn uitspringen marges binnen het blok
margin-top margin-left width left left padding
achtergrondkleur uitvullen uitlijnen
background-color text-align
position
voorbeeld display:block display:inline display:none position:absolute position:relative top:0 margin:5% margin:20em margin-top:10px margin-left:20px width:60% left:10% left:-2% padding:5% padding:20px background-color:#FFFF66 text-align:justify text-align:right text-align:center
Bij deze laatste groep opmaak-mogelijkheden zijn er een paar die enige toelichting vragen. Het belangrijkste is te weten dat met display:block wordt aangegeven dat de inhoud van het betreffende element in een tekstblok moet komen, d.w.z. beginnend op een nieuwe regel en de inhoud van een element dat er eventueel op volgt eronder ook weer op een nieuwe regel. Het is aan te raden om dit te gebruiken voor vrijwel alle elementen waar je niet expliciet iets anders wilt - namelijk gewoon op dezelfde regel wilt doorgaan. Alle specificaties van marges (links, recht, boven, onder, rondom), achtergrondkleuren en dergelijke voor een element hebben dan betrekking op dat rechthoekige blok. Voor het specificeren van lege ruimte (door sommigen wel “lege regels” genoemd) dien je bovenen/of onder-marges te gebruiken – dus GEEN “lege regels”. Ter illustratie van de mogelijkheden is onderstaand plaatje overgenomen, dat de betekenis van margin, padding e.d. laat zien. (NB: het daarin ook getoonde border blijkt door browsers overigens niet herkend/gebruikt te worden). Eventueel gespecificeerde achtergrondkleuren vullen wel de padding, maar niet de margin op.
Handleiding XML
Hoe dit blok gepositioneerd moet worden, kan ook worden aangegeven. “Relatief” (position:relative) ten opzichte van de andere elementen, wat wil zeggen dat de volgorde van de tekst in het XML-document wordt aangehouden, of “absoluut” (position:absolute) waarmee een vaste positie, onafhankelijk van lengte en positie van de rest van het document kan worden aangegeven, bijvoorbeeld met top:0 helemaal bovenaan. Dat laatste vergt soms wel gepuzzel om geen teksten over elkaar heen te krijgen. Behalve de mogelijkheid om de inhoud van een element op een andere plaats te krijgen, kun je ook aangeven dat een bepaald element helemaal niet getoond moet worden. Dat gebeurt met display:none . (Dat kun je mooi gebruiken om metadata die wel bedoeld zijn om documenten goed terug te kunnen vinden, niet ook op het scherm zichtbaar te maken). De afmetingen en posities in bovenstaande voorbeelden kunnen in verschillende eenheden worden opgegeven. Het kan relatief (voor marges ten opzichte van het gehele venster op het scherm; voor letterfonts ten opzichte van de eerdere waarde) in procenten (%) of in “em” (0.8em=80%). Het kan ook absoluut in beeldpunten op het scherm (pixels of px) of in de typografische eenheden “punt” (pt) of “pica” (pc). Veel uitgebreider overzichten van in CSS te gebruiken “eigenschappen”, hun betekenis en de daarvoor in te vullen waarden zijn te vinden op allerlei websites, bijvoorbeeld op: http://vzone.virgin.net/sizzling.jalfrezi/frames/fstyles.htm http://www.zvon.org/xxl/css1Reference/Output/index.html http://www.htmlhelp.com/reference/css/properties.html
8.2
Stylesheet editor
Voor het maken van CSS stylesheets kun je in principe gebruik maken van een gewone ASCII-editor als kladblok. Er zijn echter ook speciale CSS-editors, die je kunnen ondersteunen bij het kiezen van mogelijke opmaakspecificaties, ook als die voor XML bedoeld zijn. Van het programma TopStyle Lite dat wij daarvoor zullen gebruiken, kun je een gratis (oude) versie op je PC installeren. Het is echter ook als onderdeel in de HTMLeditor HomeSite geïntegreerd.
19
Handleiding XML
Je kunt TopStyle Lite niet rechtstreeks opstarten vanuit de NAL. Er zijn echter wel twee andere mogelijkheden om het te gebruiken: 1. Start eerst HomeSite op vanuit de NAL en klik daarin op het icoontje voor de CSSeditor (zie pijl in plaatje hieronder). De editor wordt dan opgestart in een apart venster. Zolang je met de style-editor bezig bent, mag je HomeSite nog niet afsluiten. 2. Je kunt het programma zelf op je PC installeren en het dan wel rechtstreeks opstarten. Zie voor het installeren van het programma de aanwijzingen in de bijlage (hoofdstuk 11).
Gebruik van deze CSS-editor voor het aanmaken, aanvullen of wijzigen van een stylesheet heeft diverse voordelen: - Als je in TopStyle Lite de naam van een tag intikt waarvan je de opmaak wilt regelen, gevolgd door een accolade, zet de editor meteen al de sluitaccolade neer. - Uit een keuzelijst van mogelijke “eigenschappen” rechts op het scherm, kun je gewenste style-specificaties kiezen. - Vaak verschijnt ook al een menu met die eigenschappen direct onder de cursor terwijl je aan het tikken bent. - Bij veel van die eigenschappen verschijnen ook weer uitklap-menuutjes van de bij die eigenschap toegestane “waarden”.
20
Handleiding XML
8.3
Presenteer-klaar maken van je document
Als je je stylesheet af hebt (of denkt af te hebben), wil je uiteraard het resultaat zien. Daartoe zul je eerst nog de eerder al even genoemde wijzigingen in de kop (de proloog) van je xml-document (artikel.xml) moeten aanbrengen. Doe dit liefst in een gewone editor, zoals Kladblok of Wordpad (in ASCII-mode), omdat sommige XML-editors onder water nog allerlei - in de editor zelf onzichtbare - aanpassingen in die proloog aanbrengen. -
-
-
-
Open je bestand artikel.xml in Kladblok of Wordpad Controleer of de eerste (automatisch door je XML-editor gegenereerde) regel luidt: Zo niet, pas die regel dan aan. Verwijder de door de XML-editor automatisch toegevoegde regel met de DTDdeclaratie NB: let op de vraagtekens ? voor- en achteraan. Sla je document weer op. Open nu opnieuw je document in Internet Explorer of Firefox en bekijk het resultaat van de stylesheet.
Als je nog niet tevreden bent met het resultaat zul je je stylesheet nog moeten aanpassen of aanvullen en dan opnieuw kijken wat het resultaat is. Daarvoor hoef je de browser niet af te sluiten. Breng gewoon wijzigingen in je stylesheet aan, sla die op, druk in je browser op de knop [Vernieuwen] en je ziet meteen het resultaat.
9
Gebruik van hyperlinks en plaatjes
Om in XML (en SGML) volgens de officiële regels met plaatjes of met hyperlinks te werken is nogal ingewikkeld, zeker als je de documenten vervolgens met CSS stylesheets wilt presenteren. (En hyperlinks in een papieren versie bestaan natuurlijk al helemaal niet). Gelukkig bestaat er voor presentatie in een web-browser een eenvoudig trucje: je gebruikt gewoon de manier van coderen die al in HTML gedefinieerd was en zegt er expliciet bij dat het HTML is. Die tags zijn dan uiteraard (nog) niet automatisch in je XML-editor beschikbaar, aangezien je ze (vermoedelijk) nog niet in je oorspronkelijke DTD had opgenomen. Je zou dit alsnog kunnen doen, maar je kan het je ook wat makkelijker maken door die tags achteraf met kladblok of met Wordpad (in ASCII-mode) in je document aan te brengen. Een hyperlink in de tekst ziet er dan als volgt uit:
Dat wil dus zeggen dat je in een XML-document dat je in een web-browser wilt gebruiken, gewoon een bestaande HTML-tag mag gebruiken, als je daar maar html: voorzet (ook bij de sluit-tag). Dat alleen maakt echter nog niet dat een browser die tags ook “begrijpt”. Voor XML is een algemeen mechanisme ontwikkeld, dat het mogelijk maakt om “dingen” (hier de tags) waarvan je de werking niet in je eigen systeem (je DTD of je stylesheets) gespecificeerd hebt, toch te kunnen gebruiken, omdat de betekenis daarvan wel al elders op internet gedefinieerd is (in ons geval “ergens” in een HTML-specificatie). Je moet dan alleen naar die andere definitie verwijzen. Daarvoor heeft men het begrip “namespace” ingevoerd. Met dit op het eerste gezicht wat merkwaardige woord wordt bedoeld dat er
21
Handleiding XML
ergens een “ruimte” bestaat waar de “namen” die je gebruikt al gedefinieerd zijn. Als je daarvan gebruik wilt maken, moet je aan de element-tag van je document-type (hier dus aan <artikel>) een namespace-attribuut toevoegen. Dat kan er (meer concreet) uitzien als: <artikel xmlns:html=”bla-bla-bla-bla”>
Dit wil zeggen dat je in “artikel” gebruik wilt maken van een XML NameSpace (xmlns) die HTML heet en die je computer op het adres (URL) “bla-bla-bla-bla” kan vinden. Het opmerkelijke is dat dit gewoon werkt als je echt zoals hier “bla-bla-bla-bla” invult. Het algemene formalisme hiervoor is namelijk wel al ontwikkeld (en moet ook verplicht worden toegepast, anders beweert je browser het niet te begrijpen), maar wordt niet zo serieus verwerkt dat ook echt naar een plek “bla-bla-bla-bla” gezocht gaat worden voor iets dat je computer (of je browser) toch al lang kent, zoals HTML. Voor niet zo bekende standaarden die je wilt gebruiken, moet je natuurlijk wel een echt bestaand URL opgeven, waar je computer de gegevens kan vinden die nodig zijn om gebruikte codes uit die standaard te kunnen interpreteren. Op dezelfde manier als het boven gegeven voorbeeld van de externe hyperlinks, kun je met
ook targets voor interne links aangeven. Plaatjes gaan in principe op dezelfde manier. Alleen moet je nu wel goed oppassen dat ook de gebruikte HTML-tags aan de strengere XML-regels moeten voldoen. Dat houdt in dat zelfs een “leeg element” als een plaatje (er staat geen tekst tussen een begin- en een eindtag), met een eindtag moet worden afgesloten:
Daar bestaat overigens wel een kortere mogelijkheid voor:
waarbij de slash achterin aangeeft dat de tag meteen al weer gesloten wordt.
22
Handleiding XML
10 Gecodeerde documenten doorzoeken met een XML-bewuste zoekmachine Als illustratie van de gestructureerde zoekmogelijkheden die XML kan bieden, maken we gebruik van een zoekmachine - of liever een indexeringsprogramma - waarin al XMLgevoeligheid zit ingebouwd. Dit is het programma “dtSearch”, dat XML-tags die in geïndexeeerde documenten aanwezig zijn, automatisch herkent als potentiële zoekvelden. [Zie de bijlage – hoofdstuk 11 – voor het installeren van dit programma.]
-
-
-
-
-
-
Om wat meer te doorzoeken XML-bestanden te hebben dan de een of twee die je zelf hebt gecodeerd, kun je eerst wat meer gecodeerde XML-bestanden downloaden. Deze kun je gezipt vinden op de D018-website Pak deze zip-file uit in dezelfde map waarin je ook je eigen XML-bestanden hebt aangemaakt. Start het indexeer-gedeelte van het programma, “dtSearch indexer” via Start – Programma’s – dtSearch – dtSearch Indexer Bevestig de gesuggereerde plek om gegevens op te slaan met [Yes, use this folder] Kies [Create Index] Geef deze index een naam (bijvoorbeeld “XML”) en klik op [OK] Antwoord [Ja] op de vraag of je “nu” documenten aan de index wilt toevoegen Klik op [Add folder], selecteer de hele folder waarin je eigen en de net gedownloade XML-documenten zitten, en bevestig deze keuze met [OK] Klik vervolgens op de grote knop rechtsonder [Start Indexing] Klik op [Close] als het indexeren voltooid is Sluit de dtSearch Index Manager Start het zoekgedeelte van het programma, “dtSearch” via Start – Programma’s – dtSearch – dtSearch Desktop (omdat dit een evaluatie-versie is, moet je nu eerst klikken op “Continue Evaluation”) Er verschijnt automatisch al een zoekscherm waarin waarschijnlijk “XML” al als te doorzoeken index is aangevinkt (klik dit anders alsnog aan) Klik op de knop [fields] rechtsboven het zoekvenster; er verschijnt nu een lijst met te doorzoeken velden, waarvan de meeste automatisch uit de structuur van de gecodeerde XML-documenten zijn afgeleid (dus met de gebruikte tags corresponderen) Door dubbelklikken op een gewenst veld komt de zoeksyntax voor zoeken op dat veld al in het zoekvenster te staan; LET OP: de zoekterm moet nu tussen de haakjes ingetikt worden en niet op de plaats waar de cursor terecht gekomen was Doe zelf wat zoekacties (er zit bijvoorbeeld informatie in over Elsevier, Google, Dutchess, Stanley Unwin, Michelangelo, Derk Haank en Maria Heijne) Zoekresultaten (if any) bestaan uit een lijstje gevonden documenten (boven) en de inhoud van het eerste daarvan (onder); door klikken op de knop met de groene vlek (Launch) wordt het gevonden bestand in de bijbehorende applicatie geopend (bij XML-bestanden wordt daarvoor weer Internet Explorer gebruikt)
23
Handleiding XML
11 Bijlage: Installeren van te gebruiken programma’s NB: De hier genoemde programma’s zul je waarschijnlijk meer keren op verschillende PC’s (ook thuis) moeten installeren. Dan is het handig de installatiefiles (ook) op een USBstick te zetten, zodat je de programma’s volgende keren daarvanaf kunt installeren, en je de installatiefiles niet opnieuw hoeft te downloaden.
11.1 XMLpad Deze XML-editor kan gedownload worden uit het omvangrijke software-archief van Cnet: http://download.cnet.com Zoek daar eerst XMLpad op. Je vindt dan waarschijnlijk versie 3.0.2a Op intranet vind je ook een directe link naar de download-pagina van XMLpad. Download het programma naar de C:-schijf van je computer of een USB-stick. Het is een zip-file met daarin een installatiefile “setup.exe”. Installeer XMLpad door dubbelklikken op die installatiefile. Doorloop de installatieprocedure en accepteer telkens de voorgestelde keuzes. Op deze manier wordt het programma lokaal geïnstalleerd op de C:-schijf van de computer waarop je nu werkt. Dit betekent wel dat je een volgende les deze installatieprocedure zeer waarschijnlijk opnieuw zult moeten uitvoeren. Je kunt dit programma op deze manier ook thuis installeren.
11.2 TopStyle Lite De CSS-editor TopStyle Lite is geïntegreerd in de (via de NAL op te starten) HTML-editor HomeSite beschikbaar. Daarnaast kun je hem ook los installeren met behulp van een installatie-file die we hebben klaarstaan. Daarbij heb je nog keuze uit twee versies: - TSlite-1.51 op https://intra.mim.hva.nl/mod/dtd/d018/tslite151.exe - TSlite-3.1 via de docent Na downloaden/kopiëren op de C:-schijf van je computer of je USB-stick, installeer je het programma door dubbelklikken op de betreffende installatiefile. Doorloop de installatieprocedure en accepteer telkens de voorgestelde keuzes. Op deze manier wordt het programma lokaal geïnstalleerd op de C:-schijf van de computer waarop je nu werkt. Dit betekent wel dat je een volgende les deze installatieprocedure opnieuw zult moeten uitvoeren. Je kunt dit programma op deze manier ook thuis installeren.
11.3 dtSearch Het indexeringsprogramma dtSearch kan worden gedownload vanaf de webpagina http://www.dtsearch.com/download.html Kies daar de installatiefile voor de 30-dagen evaluatie-versie: dtSearchEval763.exe Na downloaden/kopiëren naar de C:-schijf van je computer of je USB-stick, installeer je het programma door dubbelklikken op de installatiefile dtSearchEval763.exe. Doorloop de installatieprocedure en accepteer telkens de voorgestelde keuzes. Op deze manier wordt het programma lokaal geïnstalleerd op de C:-schijf van de computer waarop je nu werkt. Dit betekent wel dat je een volgende les deze installatieprocedure opnieuw zult moeten uitvoeren. Je kunt dit programma op deze manier ook thuis installeren.
24