Föregående exempel var enkla såtillvida att det bara fanns
en produkt. I praktiken kommer XML filen troligtvis att ha flera produkter.
Nedan är en mer utvecklad variant på föregående exempelfil.
Den är ännu utan XSL
xml17_1.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE products [
<!ELEMENT products (product+)>
<!ELEMENT product (code,price,amount)>
<!ELEMENT code (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT amount (#PCDATA)>
]>
<products>
<product>
<code>HPD dator</code>
<price>5000</price>
<amount>4</amount>
</product>
<product>
<code>Min dator</code>
<price>10000</price>
<amount>1</amount>
</product>
<product>
<code>Din dator</code>
<price>100</price>
<amount>1</amount>
</product>
</products>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Nedan är en modifierad variant som beaktar det att det finns flera produkter
genom att sätta in dem i en loop (iteration):
xml17_2.xsl
<?xml version='1.0' encoding="iso-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>TITEL</title>
<style type="text/css">
h4
{
font-family:verdana,arial,sans-serif;
color:#666666;
}
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h4>En TestSida</h4>
<xsl:for-each select="products/product">
<xsl:value-of select="code"/> <br />
<xsl:value-of select="price"/> <br />
<xsl:value-of select="amount"/> <br />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Vi använder denna i XML filen genom att sätta in en hänvisning
till denna stylesheet.
xml17_2.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="xml17_2.xsl"?>
<!DOCTYPE products [
<!ELEMENT products (product+)>
<!ELEMENT product (code,price,amount)>
<!ELEMENT code (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT amount (#PCDATA)>
]>
<products>
<product>
<code>HPD dator</code>
<price>5000</price>
<amount>4</amount>
</product>
<product>
<code>Min dator</code>
<price>10000</price>
<amount>1</amount>
</product>
<product>
<code>Din dator</code>
<price>100</price>
<amount>1</amount>
</product>
</products>
Öppna XML filen Öppna XML konverterad till HTML (Även NS)
Observera att vi inte behöver använda fill path till datat i ovanstående
XSL fil. Vi säger att vi vill gå igenom alla products/product,
d.v.s. vi loopar själva produktdata. Då finns vi redan på rätt
nivå och det räcker med att ange vilken datanod (leaf - löv)
i XML filen vi vill ha. Gämför med kataloghantering i ett operativsystemet.
Om vi finns i en katalog behöver vi ju inte ange full path, utan det räcker
med att ange underkatalogens namn.
Sammanfattning av vad vi sett hittills
En XSL fil innehåller dels HTML kod för formateringen av sidan,
dels "programkod" som plockar in datat från XML filen på
lämpliga ställen.
En XSL fil skall alltid ha följande början (kursiv text anger
sådanst som kan behöva modifieras)
<?xml version='1.0' encoding="iso-8859-1"
?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
och följande slut
</xsl:template>
</xsl:stylesheet>
OBS. Ibland ser man XSL kod som inte börjar med att matcha roten,
utan börjar "längre in i datat". Detta är inte rekommendabelt.
börja alltid från roten.
Man kan loopa genom datat med hjälp av
<xsl:for-each select="path till de noder vi skall
loopa genom">
...
</xsl:for-each>