Eksempel: weather

schema-fil(weather.xsd)

Prolog

Kode Forklaring
<?xml version="1.0" encoding="iso-8859-1"?>


<!-- Skjema for værdata Elin 2003 -->
        
dette er alltid første linje i en xml-, schema- eller xsl-fil. 
Ingen linjeskift,  spacer eller andre tegn må komme foran denne linja!

kommentar
        

Rotelement

Kode Forklaring
<wt:schema xmlns:wt="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified" 
           attributeFormDefault="unqualified">

   <wt:complexType name="weatherType" mixed="true">
      <wt:sequence minOccurs="0" maxOccurs="unbounded">
         <wt:element ref="city"/>
         <wt:element ref="time"/>
         <wt:element ref="temp"/>
         <wt:element ref="wspd"/>
         <wt:element ref="rain"/>
      </wt:sequence>
   </wt:complexType>

   <wt:element name="city" type="wt:string"/>
   <wt:element name="time" type="wt:dateTime"/>
   <wt:element name="temp" type="wt:float"/>
   <wt:element name="wspd" type="wt:float"/>
   <wt:element name="rain" type="wt:integer"/>

   <wt:element name="weatherdata">
      <wt:complexType>
         <wt:sequence>
            <wt:element name="weather" type="weatherType" maxOccurs="unbounded"/>   
         </wt:sequence>
      </wt:complexType>
   </wt:element>

</wt:schema>
        
schema er alltid rot i en schema-fil. Forteller hvor definisjon av schema ligger(hos W3C)
elementFormDefault spesifiserer om lokalt deklarerte elementer må navngis med targetnamespace(her wt) eller ikke
attributeFormDefault spesifiserer om lokalt deklarerte attributter må navngis med targetnamespace(her wt) eller ikke

oppretter en type weatherType som inneholder elementer av forskjellig type(mixed="true")

legger inn elementene som skal ligge i weatherType, og spesifiserer med ref
at definisjonen ligger lengre ned i koden






Definerer de ulike elementene som skal ligger i weatherType en etter en.
navn og type må spesifiseres for alle




oppretter rotelementet weatherdata


sier at weatherdata skal inneholde elementer av typen weatherType, og at de skal hete weather. maxOccurs="unbounded"
betyr at man kan ha hvor mange slike elementer man vil inne i weatherdata
        

Epilog

Ingen epilog her
    

xml-fil(weather.xml)

Kode Forklaring
<?xml version="1.0" encoding="iso-8859-1"?>


<!-- Laget av Elin Andreassen, hiof 2003 -->
<?xml-stylesheet type="text/xsl" href="weather.xsl"?>
        
dette er alltid første linje i en xml-, schema- eller xsl-fil. 
Ingen linjeskift,  spacer eller andre tegn må komme foran denne linja!

kommentar
importerer et stylesheet
        

Rotelement

Kode Forklaring
<weatherdata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:noNamespaceSchemaLocation="weather.xsd">

   <weather>
      <city>Halden</city>
      <time>2003-11-22T10:01:36</time>
      <temp>-3.4</temp>
      <wspd>0.0</wspd>
      <rain>1</rain>
   </weather>
   
   <weather>
      <city>Sarpsborg</city>
      <time>2001-09-01T17:04:15</time>
      <temp>7.3</temp>
      <wspd>3.0</wspd>
      <rain>0</rain>
   </weather>
   
   <weather>
      <city>Halden</city>
      <time>2002-01-15T10:01:36</time>
      <temp>-9.4</temp>
      <wspd>10.0</wspd>
      <rain>5</rain>
   </weather>

</weatherdata>
        
Oppretter rotelementet weatherdata. Forteller hvor egen skjema-beskrivelse 
  og generell definisjon(fra W3C) av schema ligger

oppretter et weather-element, og fyller
dette med data: city, time, temp, wspd og rain






oppretter et weather-element til, og fyller
dette med data: city, time, temp, wspd og rain






oppretter et weather-element til, og fyller
dette med data: city, time, temp, wspd og rain
        

Epilog

Ingen epilog her
    

style-fil(weather.xsl)

Kode Forklaring
<?xml version="1.0" encoding="iso-8859-1"?>
        
dette er alltid første linje i en xml-, schema- eller xsl-fil. 
Ingen linjeskift,  spacer eller andre tegn må komme foran denne linja!
        

Rotelement

Kode Forklaring
<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:template match="/">
      <html>
         <head>
            <title>Weather-data</title>
         </head>
         <body>
            <xsl:apply-templates select="weatherdata/weather"/>
         </body>
      </html>
   </xsl:template>

   <xsl:template match="weatherdata/weather">
      <h1>Weather in <xsl:value-of select="city "/>
      </h1>
      <table border="0" cellpadding="3" cellspacing="0">
         <tr>
            <th align="left">Time</th>
            <td><xsl:value-of select="time"/></td>
         </tr>
         <tr>
            <th align="left">Temperature</th>
            <td><xsl:value-of select="temp"/></td>
         </tr>
         <tr>
            <th align="left">Wind speed</th>
            <td><xsl:value-of select="wspd"/></td>
         </tr>
         <tr>
            <th align="left">Rain</th>
            <td><xsl:value-of select="rain"/></td>
         </tr>
      </table>
   </xsl:template>

</xsl:stylesheet>
        
forteller at dette er et xsl-stylesheet, versjon 1.0 av koden
forteller hvor definisjonen av transformation for xsl ligger

Oppretter en template for rotelementet. 
Her ligger html-koden for å vise webside med værdata. 




xsl:apply-templates er en prosesseringsinstruksjon som sier at man skal plukke 
ut noen noder/elementer fra et rotelement. select brukes her for å begrense/spesifisere 
utplukkingen til elementet weather i rotelementet weatherdata.


Oppretter en template for elementet weather i rotelementet weatherdata.
Koden som følger skriver ut dataene med formatering
(her city).



xsl-valueof er en prosesseringsinstruksjon som brukes for å hente ut et felt i et element.
        

Epilog

Ingen epilog her
    
Se resultat(krever IE5 eller nyere)