Guide

Arkeologisk XSLT : Frem fra glemselen (del 1)

For en tid tilbake ble jeg spurt om jeg kunne se over noe gammel XSLT-kode for noen arkeologer. De hadde funnet kode fra steinalderen som de måtte jobbe med. De skjønte ikke huleboerspråket, redskapene de brukte og meningen bak symbolene de malte på veggen. Som spesialist på tidligere kulturer og uforståelig kode kunne jeg ikke la en slik sjanse gå tapt.

Så jeg fortalte arkeologene at de skulle sende meg funnene, så skulle jeg se hva jeg kunne få ut av det. Og det gjorde de. Én XML-fil med data og ett XSLT-stilark for prosessering, og likeså en HTML-fil som et eksempel på hva slags resultat de sånn noenlunde så for seg. Som vanlig er i både primitive og mer moderne kulturer var XML-en en database over forskjellige hjelpedokumenter, og XSLT-en var utformet for å lage et register over disse dokumentene, sortert etter emne eller format og gruppert alfabetisk.

Denne artikkelserien vil handle om litt forskjellige ting, fra dårlig designede skjema til Muenchian-gruppering. Jeg skal forsøke å gi tips med faktiske eksempler. Ja, jeg vil overbære dere med mine høyst personlige meninger om slike ting som filtrering, XSLT-definisjoner og oppbygging, samt gruppering og sortering. Eksempelkoden og dataene jeg benytter er faktiske, med det forbehold at noe av dataene er forandret for å beskytte de skyldige. Det skal også tillegges at jeg har sett bra kode fra samme kilde også, på et noe senere stadie. Men nok om det.

- Overblikk

Jeg kikket gjennom XML-filen og visste allerede da at XSLT-fila ville være en utfordring i kraft av å bruke denne XML-en som grunnlag. La oss kikke på litt av koden som veltet mot meg.

<GUIDES>
     <HEADING>Guides</HEADING>
     <GUIDEDESCRIPTION> [snipped] </GUIDEDESCRIPTION>
     <CONTENTS>Contents</CONTENTS>
     <TOPICLIST>
         <TOPICNAME>Aged</TOPICNAME>
         <BOOKMARK>aged</BOOKMARK>
     </TOPICLIST>
     <TOPICLIST>
         <TOPICNAME>Asia</TOPICNAME>
         <BOOKMARK>asia</BOOKMARK>
     </TOPICLIST>
     <TOPICLIST>
         <TOPICNAME>Australia</TOPICNAME>
         <BOOKMARK>aust</BOOKMARK>
     </TOPICLIST>
     <TOPICLIST>
         <TOPICNAME>Australian Studies</TOPICNAME>
         <BOOKMARK>elec</BOOKMARK>
     </TOPICLIST>
     <TOPICLIST>
         <TOPICNAME>Biography</TOPICNAME>
         <BOOKMARK>biog</BOOKMARK>
     </TOPICLIST>

Hvis vi et øyeblikk ignorerer denne fetishen for store bokstaver for alle dine markupbehov, kan man spørre seg om hvorfor det er så mange emnelister ( TOPICLIST ) som alle har ett emne hver? Det de selvsagt prøver å fortelle oss er:

<TOPICLIST>
     <TOPIC>
         <NAME>Aged</NAME>
         <BOOKMARK>aged</BOOKMARK>
     </TOPIC>
     <TOPIC>
         <NAME>Australia</NAME>
         <BOOKMARK>aust</BOOKMARK>
     </TOPIC>
 </TOPICLIST>

... og så videre. Vi har allerede her et semantisk problem: XML-en bruker et språk som prøver å definere lister mens de i virkeligheten har èn liste. Dette er forvirrende. La oss se litt lenger ned i XML-en etter hint om hva som foregår, etter circa 100 <TOPICLIST>-elementer:

<TOPICLIST>
     <TOPICNAME>Miscellaneous</TOPICNAME>
     <BOOKMARK>misc</BOOKMARK>
 </TOPICLIST>
 <FORMATLIST>
     <FORMATNAME>Bibliographies</FORMATNAME>
     <BOOKMARK>bib</BOOKMARK>
 </FORMATLIST>
 <FORMATLIST>
     <FORMATNAME>Collection Guides</FORMATNAME>
     <BOOKMARK>collection</BOOKMARK>
 </FORMATLIST>

Plutselig og helt uten grunn forandrer "<TOPICLIST>"-elementer seg til "<FORMATLIST>"-elementer, og legg også merke til hvordan "<TOPICNAME>"-subelementet også forandrer seg til "<FORMATNAME>". Man kan bli rent svimmel å prøve å komme frem til hvorfor den semantiske strukturen må dokumenteres via språk når strukturen - altså, den grunnleggende idèen bak XML - står der til allmenn beskuelse. Og hvorfor blander vi disse to listetypene på denne måten? Finnes det noen grunner til disse forvirrende dataene i XSLT-fila?

Norges beste mobilabonnement

Juni 2017

Kåret av Tek-redaksjonen

Jeg bruker lite data:

Ice Mobil 1 GB


Jeg bruker middels mye data:

Telio Go 5 GB


Jeg bruker mye data:

Komplett Maxiflex 12 GB


Jeg er superbruker:

Komplett Megaflex 30 GB


Finn billigste abonnement i vår mobilkalkulator

Forsiden akkurat nå

Til toppen