Eksempel: flere skjemaer i samme prosjekt

schema-fil(fag.xsd)

<?xml version="1.0" encoding="iso-8859-1"?>
<fag:schema xmlns:fag="http://www.w3.org/2001/XMLSchema">

   <fag:complexType name="fagData" mixed="true">
      <fag:sequence minOccurs="0" maxOccurs="unbounded">
         <fag:element name="kode" type="fag:string" minOccurs="1" maxOccurs="1"/>
         <fag:element name="navn" type="fag:string" minOccurs="1" maxOccurs="1"/>
         <fag:element name="studiepoeng" type="fag:integer" minOccurs="1" maxOccurs="1"/>
         <fag:element name="start" type="fag:gYearMonth" minOccurs="1" maxOccurs="1"/>
         <fag:element name="slutt" type="fag:gYearMonth" minOccurs="1" maxOccurs="1"/>
      </fag:sequence>
   </fag:complexType>

</fag:schema>
   

schema-fil(studentFag.xsd)

<?xml version="1.0" encoding="iso-8859-1"?>
<sfag:schema xmlns:sfag="http://www.w3.org/2001/XMLSchema">

   <sfag:include schemaLocation="fag.xsd"/>

   <sfag:complexType name="sfagData" mixed="true">
      <sfag:complexContent>
         <sfag:extension base="fagData">
           <sfag:sequence minOccurs="0" maxOccurs="unbounded">
               <sfag:element name="karakter" type="sfag:string" minOccurs="0" maxOccurs="unbounded"/>
            </sfag:sequence>
         </sfag:extension>
      </sfag:complexContent>
   </sfag:complexType>

</sfag:schema>
   

schema-fil(foreleserFag.xsd)

<?xml version="1.0" encoding="iso-8859-1"?>
<ffag:schema xmlns:ffag="http://www.w3.org/2001/XMLSchema">

   <ffag:include schemaLocation="fag.xsd"/>

   <ffag:complexType name="ffagData" mixed="true">
     <ffag:complexContent>
         <ffag:extension base="fagData">
            <ffag:sequence minOccurs="0" maxOccurs="unbounded">
               <ffag:element name="antUkeTimer" type="ffag:integer" minOccurs="0" maxOccurs="1"/>
            </ffag:sequence>
         </ffag:extension>
      </ffag:complexContent>
   </ffag:complexType>

</ffag:schema>
   

schema-fil(studium.xsd)

<?xml version="1.0" encoding="iso-8859-1"?>
<stud:schema xmlns:stud="http://www.w3.org/2001/XMLSchema">

   <stud:include schemaLocation="studentFag.xsd"/>

   <stud:complexType name="studData" mixed="true">
      <stud:sequence minOccurs="0" maxOccurs="unbounded">
         <stud:element name="kode" type="stud:string" minOccurs="1" maxOccurs="1"/>
         <stud:element name="navn" type="stud:string" minOccurs="1" maxOccurs="1"/>
         <stud:element name="beskrivelse" type="stud:string" minOccurs="1" maxOccurs="1"/>
         <stud:element name="studiepoeng" type="stud:string" minOccurs="1" maxOccurs="1"/>
         <stud:element name="fag" type="sfagData" minOccurs="0" maxOccurs="unbounded"/>
         <stud:element name="ferdig" type="stud:boolean" minOccurs="1" maxOccurs="1"/>
      </stud:sequence>
   </stud:complexType>

</stud:schema>
   

schema-fil(undervisning.xsd)

<?xml version="1.0" encoding="iso-8859-1"?>
<und:schema xmlns:und="http://www.w3.org/2001/XMLSchema">
<!-- 
   eksempel som viser bruk av flere skjema og derived types
   stikkord for derived types er extension base, 
   og det kan minne om arv   
-->

   <und:include schemaLocation="studium.xsd"/>
   <und:include schemaLocation="foreleserFag.xsd"/>


   <und:complexType name="personData" mixed="true">
      <und:sequence minOccurs="0" maxOccurs="unbounded">
         <und:element name="navn" type="und:string" minOccurs="1" maxOccurs="1"/>
         <und:element name="fodt" type="und:date" minOccurs="1" maxOccurs="1"/>
      </und:sequence>
   </und:complexType>

   <und:complexType name="studentData" mixed="true">
      <und:complexContent>
         <und:extension base="personData">
           <und:sequence minOccurs="0" maxOccurs="unbounded">
               <und:element name="studentnr" type="und:integer" minOccurs="1" maxOccurs="1"/>
               <und:element name="studium" type="studData" minOccurs="0" maxOccurs="unbounded"/>   
           </und:sequence>
         </und:extension>
      </und:complexContent>
   </und:complexType>

   <und:complexType name="foreleserData" mixed="true">
      <und:complexContent>
         <und:extension base="personData">
           <und:sequence minOccurs="0" maxOccurs="unbounded">
              <und:element name="ansvarligFag" type="ffagData" minOccurs="0" maxOccurs="unbounded"/>
              <und:element name="ekstraFag" type="ffagData" minOccurs="0" maxOccurs="unbounded"/>
           </und:sequence>
         </und:extension>
      </und:complexContent>
   </und:complexType>

   <und:element name="undervisning">
      <und:complexType>
         <und:sequence>
            <und:element name="student" type="und:studentData" minOccurs="0" maxOccurs="unbounded"/>
            <und:element name="foreleser" type="und:foreleserData" minOccurs="0" maxOccurs="unbounded"/>
         </und:sequence>
      </und:complexType>
   </und:element>
</und:schema>
   

xml-fil(undervisning.xml)

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="undervisning.xsl"?>
<undervisning xmlns:und="http://www.w3.org/2001/XMLSchema-instance" 
              und:noNamespaceSchemaLocation="undervisning.xsd">

   <student>
      <navn>Per Olsen</navn>
      <fodt>1980-12-29</fodt>
      <studentnr>002346</studentnr>
      <studium>
         <kode>02HLA</kode>
         <navn>Allmennlærer</navn>
         <beskrivelse>Lærerutdanning med start høst 2002</beskrivelse>
         <studiepoeng>180</studiepoeng>

         <fag>
            <kode>02LAPSY</kode>
            <navn>Psykologi</navn>
            <studiepoeng>20</studiepoeng>
            <start>2002-08</start>
            <slutt>2003-06</slutt>
            <karakter>C</karakter>
         </fag>
          <fag>
            <kode>02LAMA1</kode>
            <navn>Matematikk 1</navn>
            <studiepoeng>10</studiepoeng>
            <start>2002-08</start>
            <slutt>2002-12</slutt>
            <karakter>B</karakter>
         </fag>
         <fag>
            <kode>02LADAT</kode>
            <navn>Innføring i data</navn>
            <studiepoeng>10</studiepoeng>
            <start>2002-08</start>
            <slutt>2002-12</slutt>
            <karakter>B</karakter>
         </fag>
         <fag>
            <kode>02LAPD1</kode>
            <navn>Pedagogikk 1</navn>
            <studiepoeng>10</studiepoeng>
            <start>2003-01</start>
            <slutt>2003-06</slutt>
            <karakter>A</karakter>
         </fag>
         <fag>
            <kode>02LANO1</kode>
            <navn>Norsk 1</navn>
            <studiepoeng>10</studiepoeng>
            <start>2003-01</start>
            <slutt>2003-06</slutt>
            <karakter>C</karakter>
         </fag>

         <ferdig>false</ferdig>
      </studium>
   </student>

   <foreleser>
      <navn>Inger Nilsen</navn>
      <fodt>1954-06-21</fodt>
      <ansvarligFag>
         <kode>02LAPD1</kode>
         <navn>Pedagogikk 1</navn>
         <studiepoeng>10</studiepoeng>
         <start>2003-01</start>
         <slutt>2003-01</slutt>
         <antUkeTimer>6</antUkeTimer>
      </ansvarligFag>
      <ekstraFag>
         <kode>02LAPSY</kode>
         <navn>Psykologi</navn>
         <studiepoeng>20</studiepoeng>
         <start>2002-08</start>
         <slutt>2003-06</slutt>
         <antUkeTimer>10</antUkeTimer>
      </ekstraFag>
   </foreleser>

</undervisning>
    

style-fil(undervisning.xsl)

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

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

<xsl:template match="/">
   <html>
   <head>
     <title>Undervisning</title>
   </head>

   <body>

   <h1>Undervisning</h1>

   <h2>Studenter</h2>

   <table border="1" cellpadding="10" cellspacing="0">
   <tr>
      <th align="left" valign="top">Navn</th>
      <th align="left" valign="top">Fødselsdato</th>
      <th align="left" valign="top">Studentnr</th>
      <th align="left" valign="top">Studium</th>
   </tr>
       
   <xsl:for-each select="/undervisning/student">
   <tr>
        <td valign="top"><xsl:value-of select="navn"/></td>
      <td valign="top"><xsl:value-of select="fodt"/></td>
      <td valign="top"><xsl:value-of select="studentnr"/></td>
      <td valign="top">
         <table border="1" cellpadding="10" cellspacing="0">
         <tr>
            <th align="left" valign="top">Kode</th>
            <th align="left" valign="top">Navn</th>
            <th align="left" valign="top">Beskrivelse</th>
            <th align="left" valign="top">Studiepoeng</th>
            <th align="left" valign="top">Fag</th>
            <th align="left" valign="top">Ferdig</th>
         </tr>
         <xsl:for-each select="/undervisning/student/studium">
         <tr>
            <td valign="top"><xsl:value-of select="kode"/></td>
            <td valign="top"><xsl:value-of select="navn"/></td>
            <td valign="top"><xsl:value-of select="beskrivelse"/></td>
            <td valign="top"><xsl:value-of select="studiepoeng"/></td>
            <td valign="top">

               <table border="1" cellpadding="10" cellspacing="0">
               <tr>
                  <th align="left" valign="top">Kode</th>
                  <th align="left" valign="top">Navn</th>
                  <th align="left" valign="top">Studiepoeng</th>
                  <th align="left" valign="top">Start</th>
                  <th align="left" valign="top">Slutt</th>
                  <th align="left" valign="top">Karakter</th>
               </tr>
               <xsl:for-each select="/undervisning/student/studium/fag">
               <tr>
                  <td valign="top"><xsl:value-of select="kode"/></td>
                  <td valign="top"><xsl:value-of select="navn"/></td>
                  <td valign="top"><xsl:value-of select="studiepoeng"/></td>
                  <td valign="top"><xsl:value-of select="start"/></td>
                  <td valign="top"><xsl:value-of select="slutt"/></td>
                  <td valign="top"><xsl:value-of select="karakter"/></td>
               </tr>
               </xsl:for-each>
               </table>
            </td>
            <td valign="top">
               <xsl:choose>
                  <xsl:when test="ferdig = 'false'">
                     Nei
                  </xsl:when>
                  <xsl:otherwise>
                     Ja
                  </xsl:otherwise>
               </xsl:choose>
            </td>
         </tr>
         </xsl:for-each>
         </table>
      </td>
   </tr>
   </xsl:for-each>
   </table>

   <h2>Forelesere</h2>

   <table border="1" cellpadding="10" cellspacing="0">
   <tr>
      <th align="left" valign="top">Navn</th>
      <th align="left" valign="top">Fødselsdato</th>
      <th align="left" valign="top">Ansvarlig for fag</th>
      <th align="left" valign="top">Hjelper til i fag</th>
   </tr>
       
   <xsl:for-each select="/undervisning/foreleser">
   <tr>
        <td valign="top"><xsl:value-of select="navn"/></td>
      <td valign="top"><xsl:value-of select="fodt"/></td>
      <td valign="top">
         <table border="1" cellpadding="10" cellspacing="0">
         <tr>
            <th align="left" valign="top">Kode</th>
            <th align="left" valign="top">Navn</th>
            <th align="left" valign="top">Studiepoeng</th>
            <th align="left" valign="top">Start</th>
            <th align="left" valign="top">Slutt</th>
            <th align="left" valign="top">Antall timer pr. uke(totalt for fag)</th>
         </tr>
         <xsl:for-each select="/undervisning/foreleser/ansvarligFag">
         <tr>
            <td valign="top"><xsl:value-of select="kode"/></td>
            <td valign="top"><xsl:value-of select="navn"/></td>
            <td valign="top"><xsl:value-of select="studiepoeng"/></td>
            <td valign="top"><xsl:value-of select="start"/></td>
            <td valign="top"><xsl:value-of select="slutt"/></td>
            <td valign="top"><xsl:value-of select="antUkeTimer"/></td>
         </tr>
         </xsl:for-each>
         </table>
      </td>
      <td valign="top">
         <table border="1" cellpadding="10" cellspacing="0">
         <tr>
            <th align="left" valign="top">Kode</th>
            <th align="left" valign="top">Navn</th>
            <th align="left" valign="top">Studiepoeng</th>
            <th align="left" valign="top">Start</th>
            <th align="left" valign="top">Slutt</th>
            <th align="left" valign="top">Antall timer pr. uke(totalt for fag)</th>
         </tr>
         <xsl:for-each select="/undervisning/foreleser/ekstraFag">
         <tr>
            <td valign="top"><xsl:value-of select="kode"/></td>
            <td valign="top"><xsl:value-of select="navn"/></td>
            <td valign="top"><xsl:value-of select="studiepoeng"/></td>
            <td valign="top"><xsl:value-of select="start"/></td>
            <td valign="top"><xsl:value-of select="slutt"/></td>
            <td valign="top"><xsl:value-of select="antUkeTimer"/></td>
         </tr>
         </xsl:for-each>
         </table>
      </td>
   </tr>
   </xsl:for-each>
   </table>
        
   </body>
   </html>
</xsl:template>

</xsl:stylesheet>
    
Se resultat(krever IE5 eller nyere)