XSL i praktiken
Vi utgår från en XML fil. Den måste vara well-formed och 
  helst även validerad mot en DTD. Nedan finns en fil som uppfyller dessa 
  villkor: 
  xml16_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> 
</products>
 Öppna XML filen   Öppna XML konverterad till HTML (Även NS)
Öppna XML filen   Öppna XML konverterad till HTML (Även NS)
Denna fil skulle vi vilja visa på nätet och behöver för 
  detta en XSL fil...
Börja från en HTML fil
Vi kan utan problem utgå från en HTML fil, som visedan modifierar 
  till att bli en XSL fil. Nedan finns en liten HTML fil som vi kan utgå 
  från. Eftersom XSL filen kommer att betraktas som en XML fil när 
  den är färdig, är det noga med att även HTML koden är 
  well-formed. Den skall gärna uppfylla XHTML normerna. 
 
  
xml16_1.htm
<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>
    		<!--  hit vill jag få in från XML filen -->
  	</body>
</html>
 Klicka här för att se filen i praktiken
Klicka här för att se filen i praktiken
För att få html filen till en (simpel) XSL krävs några 
  saker. 
  - När du är nöjd med HTML filens utseende så sparar du 
    den med filextension .xsl
- Sedan gör du de modifieringar som syns nedan. Det är tre rader 
    som kommer in i början, och två som kommer till i slutet.
  
xml16_1.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>
    		<!--  hit vill jag få in från XML filen -->
  	</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
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Den första raden är en normal XML Pi som säger att detta är 
  en XML fil och den använder teckenuppsättningen från iso-8859-1.
Den andra raden säger vilken xml standard som används. Här är 
  det lite jobbigt eftersom den rad som visas i ovanstående exempel inte 
  följer senaste standard. Egentligen borde det stå:
  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Men eftersom Microsoft implementerade XML i IE före den senaste standarden 
  blivit fastställd, så förväntar sig IE att får se 
  den instruktion som då var gällande:
  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
OBS. Om du skriver för Microsoft Internet Explorer 6.0 och inte behöver 
  beakta bakåtkompatibilitet, skall du använda den korrekta versionen. 
  Det är dock inte en bug i IE5, utan MS gjorde det bästa de för 
  tillfället kunde med denna browsers XML implementation.
Den tredje raden säger attdenna template skall matcha rotnoden. En template 
  skall alltid ha en match mot roten "/", även om vi inte är 
  intresserad av dess värden, utam bara data djupare in.
De två sista raderna avslutar template och stylesheet
Nästa steg
I detta skede har vi en fungerande XML fil och en giltig (men inte alltför 
  effektiv) XSL fil. 
Följande steg blir att koppla ihop dessa. Detta görs genom att sätta 
  en hänvisning till XSL filen i XML filen. Se nedan:
  xml16_2.xml
<?xml version="1.0" encoding="iso-8859-1"?>  
<?xml-stylesheet type="text/xsl" href="xml16_1.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> 
</products>
 Öppna XML filen   Öppna XML konverterad till HTML (Även NS)
Öppna XML filen   Öppna XML konverterad till HTML (Även NS)
Ovanstående exempel är fullt giltig XSL kod. Problemet är bara 
  att det inte visas något data i sidan. Det är lätt fixat. Om 
  vi sätter in några rader så att vi får följande 
  kod så ser vi lite mer:
 
  
xml16_3.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:value-of select="products/product/code"/> <br />
    		<xsl:value-of select="products/product/price"/> <br />
    		<xsl:value-of select="products/product/amount"/> <br />
  	</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
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Om denna modifierade XSL fil används i vår XML fil får vi 
  följande resultat.
  
xml16_3.xml
<?xml version="1.0" encoding="iso-8859-1"?>  
<?xml-stylesheet type="text/xsl" href="xml16_3.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> 
</products>
 Öppna XML filen   Öppna XML konverterad till HTML (Även NS)
Öppna XML filen   Öppna XML konverterad till HTML (Även NS)
Detta fungerar så att raden 
<xsl:value-of select="products/product/code"/>
säger att vi vill visa värdet (value-of) på det valda data 
  (select) som finns under roten products, i en noden product och 
  i dess nod code. Jämför gärna med hur man hänvisar 
  till kataloger på en disk (paths). Samma regler om nuvarande katalog och 
  underkataloger som finns för diskar, gäller även för XSL. 
  MEr om detta senare i texten...