Skip to content Skip to navigation

OpenStax_CNX

You are here: Home » Content » Fra XML til HTML med XSLT – en introduktion

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

Fra XML til HTML med XSLT – en introduktion

Module by: Lars Johnsen. E-mail the author

Summary: XSLT er en slags programmeringssprog. Med XSLT kan man f.eks. transformere XML til HTML.

Introduktion

I modsætning til HTML-dokumenter, der automatisk bliver vist med typografi og layout, når de åbnes i en browser som Internet Explorer eller Firefox, indeholder XML-dokumenter i sig selv normalt ingen information om, hvordan de skal visuelt skal fremstå, og vil derfor blot blive præsenteret i en form for ”rå kode”, når man åbner dem i en browser. Dette er helt tilsigtet: ideen med XML er blandt andet, at et XML-dokument skal kunne vises forskelligt, alt efter hvem målgruppen er, hvad konteksten er, eller hvilket medium dokumentet skal vises i. Og nogle gange skal et XML-dokument slet ikke præsenteres. Det gælder f.eks. i de tilfælde, hvor XML bliver brugt som format for udveksling af data mellem it-systemer, og hvor det overhovedet ikke er nødvendigt, at XML-dokumentet læses af et menneske. I andre tilfælde er en læsevenlig præsentation af XML-dokumenter helt nødvendig, f.eks. hvis de skal publiceres på Nettet og læses af en bruger i en browser.

Præsentation med CSS

Man kan give et XML-dokument en visuel form på forskellige måder. En ofte anvendt metode er at koble et CSS-stylesheet til XML-dokumentet. Et CSS-style sheet er et simpelt tekstdokument, der indeholder en række regler, som foreskriver, hvordan indholdet i XML-dokumentet typografisk og layoutmæssigt skal fremstå. I og med at et XML-dokument kan beskrives som en træstruktur, taler man nogle gange om, at et CSS-stylesheet ”pynter” XML-træet. CSS-style sheets er forholdsvis enkle og nemme at udarbejde, men har også visse begrænsninger. Eksempelvis er det vanskeligt med et CSS-style sheet at vise et XML-dokuments enkelte indholdselementer i en anden rækkefølge end den, de optræder i, i selve XML-dokumentet.

XSLT-stylesheets

Langt mere fleksible er XSLT-style sheets. Med et XSLT-style sheet kan man udtrække og vise XML-indhold på et utal af måder, til forskellige formål, og til diverse medier som f.eks. computerskærm eller mobiltelefon.

XSLT, en forkortelse for Extensible Style Language Transformations, er en slags programmeringssprog til behandling af XML-dokumenter. Programmer udarbejdet ved hjælp af XSLT kaldes for XSLT-scripts, XSLT-transforms eller XSLT-style sheets.

Et XSLT-style sheet er, lige som et CSS-style sheet, et tekstdokument med et sæt af regler. Disse regler er imidlertid ikke regler, som direkte beskriver, hvordan en given datastruktur i et XML-dokument skal præsenteres, men et sæt instrukser, der specificerer, hvordan denne datastruktur skal transformeres. Med et XSLT-style sheet kan man transformere et dokument i et XML-format til et andet; man kan lave det om til HTML, eller man kan konvertere det til en almindelig tekst.

Transformation af XML med XSLT

Et XML-dokument, der skal vises på Nettet, skal typisk transformeres til HTML eller XHTML, således at det kan vises i en browser. Rent konkret foregår en XML-til-HTML transformation ved, at en XML-processor, et stykke software, læser XSLT-style sheetet og gennemfører transformationen af XML-dokumentet, også kaldet kildedokumentet, som er foreskrevet i XSLT-style sheetet. Transformationen kan ske på en webserver (”server side”), inden det sendes af sted til eller i slutbrugerens egen browser (”client side”). I begge tilfælde bliver der som output genereret (X)HTML-kode, som kan vises i en browser. Selve koblingen af XML-dokumentet og det tilhørende XSLT-stylesheet kan ske ad flere veje. Meget ofte vil der simpelthen være et link fra kildedokumentet til det style sheet, som XML-processoren skal benytte i forbindelse med transformationen.

(Se en visualisering af, hvordan en XSLT-transformation foregår).

Et XSLT-style sheet kan som sagt opfattes som en samling af transformationsregler. En transformationsregel omfatter normalt to instrukser: en instruks, der angiver, hvad der skal transformeres i kildedokumentet og en anden instruks, der specificerer, hvad resultatet af transformationen skal være. En transformationsregel til et bogkatalog i XML, der skal præsenteres på Nettet, kunne eksempelvis på (nogenlunde) mundret dansk lyde sådan her:

transformationsregel:

Find alle krimiforfattere og præsenter dem i en nummereret liste.

I en XML-til-HTML transformation skulle denne instruks måske formuleres som:

transformationsregel:

Find indholdet af elementet navn i alle forfatter-elementer, som findes i krimi-elementet i kildedokumentet og sæt det ind i et li-element i en ol.

En sådan instruktion ville med andre ord konvertere en XML-datastruktur som:



<krimi>
  <forfatter>
   <navn>Jens Hansen</navn>
  </forfatter>
  <forfatter>
   <navn>Hans Jensen</navn>
  </forfatter>
</krimi>

til følgende HTML-output:


<ol>
  <li>Jens Hansen</li>
  <li>Hans Jensen</li>
</ol>

Øvelse

Hvordan transformationsregler rent faktisk kodes i XSLT, og hvordan et XSLT-style sheet egentlig er opbygget, illustreres nedenfor gennem et konkret eksempel. Eksemplet indeholder et kildedokument i XML (en pressemeddelelse), et XSLT-style sheet og den HTML-kode, som genereres, når style sheetet appliceres på kildedokumentet i en XML-processor. Kig på kildedokument, style sheet og output og besvar de tilhørende spørgsmål:



<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="pressemeddelelse1.xsl"?>
<pressemeddelelse> 
  <dato>12.12.2008</dato> 
  <overskrift>Ny dokumentstandard i Opdikt A/S </overskrift> 
  <resume>Opdikt A/S har i dag offentliggjort planer om at indføre XML som fælles dokumentstandard i hele organisationen</resume> 
  <indhold>På direktionens møde i dag blev det besluttet at indføre XML som   fælles format i virksomhedens Web-baserede kommunikation. 
XML vil blive anvendt på virksomhedens intranet, i den	Web-baserede markedskommunikation og, sidst men ikke mindst, 
som dataudvekslingsformat i forbindelse med e-handelstransaktioner. 
Implementeringen af planen varetages af virksomhedens IT-afdeling 
og forventes at løbe et halvt år.  </indhold> 
 <kontaktperson> 
 <fornavn>Hans</fornavn>
 <efternavn>Jensen</efternavn>
 <afdeling>It-afdelingen</afdeling>
<email>hans@it.opdikt.dk</email> 
</kontaktperson>
</pressemeddelelse>



<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
    <html>
      <head>
        <title>Pressemeddelelse</title>
       </head>
      <body>
       <p style="font-size:24">Pressemeddelelse</p>
       <p align="right"><xsl:value-of select="pressemeddelelse/dato" /></p>
       <p style="font-weight:bold; font-size:18">
         <xsl:value-of select="pressemeddelelse/overskrift" /></p>
       <p><i><xsl:value-of select="pressemeddelelse/resume" /></i></p>
       <p><xsl:value-of select="pressemeddelelse/indhold" /></p>
       <p><b>Kontakt:</b></p>
       <p><xsl:value-of select="pressemeddelelse/kontaktperson/fornavn" />
         <xsl:text> </xsl:text>
       <xsl:value-of select="pressemeddelelse/kontaktperson/efternavn" />
         <xsl:text> </xsl:text>
      (email: <xsl:value-of select="pressemeddelelse/kontaktperson/email" />)</p>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>



<html>
  <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-16">
    <title>Pressemeddelelse</title>
  </head>
  <body>
    <p style="font-size:24">Pressemeddelelse</p>
    <p align="right">12.12.2008</p>
    <p style="font-weight:bold; font-size:18">Ny dokumentstandard i Opdikt A/S </p>
    <p><i>Opdikt A/S har i dag offentliggjort planer om at indføre XML som
	 fælles dokumentstandard i hele organisationen</i></p>
    <p> 
På direktionens møde i dag blev det besluttet at indføre XML som fælles format i virksomhedens Web-baserede kommunikation. 
XML vil blive anvendt på virksomhedens intranet, i den Web-baserede markedskommunikation og, sidst men ikke mindst, 
som dataudvekslingsformat i forbindelse med e-handelstransaktioner. 
Implementeringen af planen varetages af virksomhedens IT-afdeling  
og forventes at løbe et halvt år.   </p>
    <p><b>Kontakt:</b></p>
    <p>Hans Jensen (email: hans@it.opdikt.dk)</p>
  </body>
</html>

Spørgsmål

  1. Hvordan kobles XML-dokument og XSLT-style sheet sammen?
  2. Kildedokumentet er i XML. Hvad med XSLT-style sheetet?
  3. Nogle elementer i style sheetet starter med ”forstavelsen” xsl, men andre ikke gør. Hvorfor mon?
  4. Hvilken instruks bruges i style sheetet til at udtrække data fra kildedokumentet?
  5. Hvordan lokaliseres det indhold i kildedokumentet, der skal udtrækkes?
  6. Man taler nogle gange om, at XML-indhold ”pakkes ind” i HTML. Forklar denne metafor.
  7. Bliver alt indhold vist i HTML-outputtet? Hvorfor/hvorfor ikke?

Content actions

Download module as:

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks