XML Schema/Primer

Z Wikibooks, biblioteki wolnych podręczników.

Deklaracja xsd:schema[edytuj]

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Określa, że aktualny dokument XML zawiera deklaracje określające dozwolone typy.

Tag xsd:element [edytuj]

<xsd:element name="Nazwa Tagu" type="Typ danych" />

  • atrybut name - określa nazwę tagu XML, którego właściwości opisujemy,
  • atrybut type - określa typ zawartości tagu (Zobacz: Typy danych). Mogą to być typy wbudowane lub zdefiniowane przez tag xsd:complexType.

Tag xsd:complexType[edytuj]

<xsd:complexType name="Nazwa Typu"> <!-- deklaracje --> </xsd:complexType>

Wprowadza definicję własnego typu danych. Powinien posiadać następujące podtagi:

xsd:sequence[edytuj]

Zawiera podtag(-i) xsd:element określające jakie podtagi powinien zawierać tag XML, który opatrzyliśmy naszym typem.

<xsd:sequence>
    <xsd:element name="imie"   type="xsd:string"/>
    <xsd:element name="ulica" type="xsd:string"/>
    <xsd:element name="miasto"   type="xsd:string"/>
    <xsd:element name="wojewodztwo"  type="xsd:string"/>
    <xsd:element name="kod_pocztowy"    type="xsd:decimal"/>
</xsd:sequence>

xsd:attribute[edytuj]

Określa jakie atrybuty może/powinien posiadać tag naszego typu. Atrybuty:

  • name - określa nazwę atrybutu
  • type - typ zawartości atrybutu
  • fixed - wartość domyślna
  • use - określa czy ten atrybut jest obowiązkowy (required), czy też nie

<xsd:attribute name="kraj" type="xsd:NMTOKEN" fixed="PL"/>
Podtag xsd:attribute może wystąpić wielokrotnie.

Przykład[edytuj]

Poniższa deklaracja:

<xsd:complexType name="Adres">
    <xsd:sequence>
      <xsd:element name="imie"   type="xsd:string"/>
      <xsd:element name="ulica" type="xsd:string"/>
      <xsd:element name="miasto"   type="xsd:string"/>
      <xsd:element name="wojewodztwo"  type="xsd:string"/>
      <xsd:element name="kod_pocztowy"    type="xsd:decimal"/>
    </xsd:sequence>
      <xsd:attribute name="kraj" type="xsd:NMTOKEN" fixed="PL"/>
</xsd:complexType>

w połączeniu z <xsd:element name="czlonek" type="Adres"/> sprawi, że...

… poniższy dokument XML będzie uznany za prawidłowy:

<czlonek kraj="PL">
 <imie>Nieznajomy</imie>
 <ulica>ul. Nieznana</ulica>
 <miasto>Nigdziejów</miasto>
 <wojewodztwo>MAŁO znane</wojewodztwo>
 <kod_pocztowy>00000</kod_pocztowy>
</czlonek>
</nowiki>
</pre>
</td><td width="50%">
<span style="color:red;"> a ten za nieprawidłowy:</span><br>
<pre>
<nowiki>
<czlonek kraj="Polska"><!-- nieprawidłowy typ dla "kraj" -->
 <!-- brak tagu "Imie" -->
 <ulica>ul. Nieznana</ulica>
 <miasto>Nigdziejów</miasto>
 <!-- brak tagu "wojewodztwo: -->
 <kod_pocztowy>5 zer</kod_pocztowy>
   <!-- nieprawidłowa zawartość -->
</czlonek>

Tag xsd:simpleType[edytuj]