XMLXSLXSL loopar
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunderna XSL Dynamiska sidor XML i praktiken

XSL loopar

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>
  XSL i praktikenXSL programmering
XSL
XSL i praktiken
XSL loopar
XSL programmering
XSL patterns
Patterns exempel
Programkoden
xsl:if
xsl:choose
xsl:for-each
xsl:apply-templates
XSL Övningar
XML versioner
Microsofts lösning
Nummer och datum
Typexempel för XSL ...


Top
< XSL i praktiken XSL programmering>
© Anders Enges, Vörå 2002  | 04.10.01 11:15 Visa asp koden