Informationsansvarig: Marie-Louise Gustafsson, webmaster@itn.liu.se
Sidan uppdaterades senast: 2006-05-16
LiU > ITN>Utbildning> Utbildningsområden


[ Hoppa direkt till textinnehållet ] [ Hjälp ] [ Tillgänglighetsinformation ]
In English | A till ÖKartorKontakta oss
Gå till LiU.se
LiU > ITN>Utbildning> Utbildningsområden

Laboration XML Schemas
Laborationspoäng: 5

Förberedelser

Förbered dig genom att läsa föreläsningsanteckningar om Namespaces och XML Schemas, samt motsvarande kapitel i boken. Dessa är kapitel 4(namespaces) och 17 (xml schemas). Ha även kapitel 22 till hands som referens. Du kommer dock förmodligen mest flitigt konsultera XML Schema primer som är utmärkt!

Översikt

I denna laboration ska du lära dig skriva XML Schemas, mot vilka XML-dokument kan valideras på liknande sätt som i DTD-laboraionen.

Poäng

Laborationen är frivillig och ger 5 poäng.

XML Schema (5p, valfri)

Skapa en katalog under mappen "TNM065" i din webbkatalog, och döp den nya katalogen till "lab-xmlschemas".

Gör sedan en fil, party2.xml, som du sparar i den katalogen och vars innehåll är så här


<party  xmlns="http://www.student.itn.liu.se/~ditt-användarnamn/TNM065/lab-xmlschemas/"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation=
       "http://www.student.itn.liu.se/~ditt-användarnamn/TNM065/lab-xmlschemas/
        http://www.student.itn.liu.se/~ditt-användarnamn/TNM065/lab-xmlschemas/party.xsd">
  <title>
    Amphiox Gasque
  </title>
</party>

Byt givetvis ut ditt-användarnamn/ mot just ditt användarnamn

Gör sedan en fil, party.xsd som du sparar i samma katalog, och vars innehåll är

	  
<schema xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:party="http://www.student.itn.liu.se/~ditt-användarnamn/TNM065/lab-xmlschemas/"
  elementFormDefault="qualified"
  targetNamespace="http://www.student.itn.liu.se/~ditt-användarnamn/TNM065/lab-xmlschemas/">

  <element name="party"             type="party:PartyType"/>
  <element name="title"             type="string"/>

  <complexType name="PartyType">
    <sequence>
      <element ref="party:title"/>
    </sequence>
  </complexType>
</schema>
Byt även här ut ditt-användarnamn/ mot ditt användarnamn

Validera dokumentet  party2.xml på http://www.w3.org/2001/03/webdata/xsv . Glöm inte att klicka i vilken browsertyp du använder.OBS!!! Ibland verkar valideraren ha en otäck cache-funktion som gör att ändringar inte registreras. Använd då uploadfunktionen istället.

Nu ska du börja modifiera schemat party.xsd så att det till slut kan validera filen party.xml från DTD-laborationen (förutsatt att alla namespacedeklarationer i elemetet party från dokumentet party2.xml stoppats in).
 

Börja med att deklarera de enkla elementen såsom title, date, starttime osv. De flesta av dessa har datatyper som finns definierade i XML Schema primer. Notera att du ska använda "rätt" datatyp. Att deklarera dessa datatyper som strängar gör förvisso dokumentet validerbart, men utnyttjar inte de möjligheter som finns.

Ett tips är att deklarera något/några element i taget, testa att sätta in motsvarande element i instansdokumentet och därefter validera. Annars blir man lätt förvirrad av många felmeddelanden. Observera också att validatorn hittar fel både i schemat och i instansdokumentet.

Två "simpleTypes", phone och email, kräver att du definiera egna datatyper. Dessa ska definieras med hjälp av regular expressions (se appendix D i XML Schema primer).

  • phone ska vara uppbyggt enligt följande: Först en nolla följt av 1-3 siffror. Därefter ett "-" följt av 5-8 siffror.
  • email ska vara uppbyggd av en eller flera "word characters" (kodas \w) följt av ett "@" följt av en eller flera word characters. Avslutningsvis ska en eller flera upprepningar av sekvensen ("." (kodas \.) följt av en eller flera word characters") finnas.
Elementen starter, main_course och dessert ska alla ha exakt samma datatyp, dishType.

Elementen contact, host, toastmaster och guest ska alla "ärva" sin content-model från ett datatyp som ska heta "person". Datatypen person ska innehålla ett firstname-element följt av ett lastname-element.

I övrigt ska schemat vara minst lika restriktivt som DTDn. Entiteter för märkliga tecken deklareras  med ett internt DTD-subset i instansdokumentet (se appendix C i XML Schema Primer).

När allt är klart ska det gå att validera party2.xml som ska se ut exakt som party.xml fråntaget namespacedeklarationerna och det interna DTD-subsetet.

Lämna in en länk till dokumenten i It's learning