XML Schema

Z Wikipedie, otevřené encyklopedie

XML Schema je jedno z XML schémat, jazyků pro popis XML. Tento jazyk vznikl jako W3C doporučení v roce 2001.[1] Protože se název jazyka shoduje s obecným označením jazyků pro popis dokumentů XML, vznikla tak označení XML schema jako XSD (iniciativa pro definici XML schématu, XML Schema Definition) nebo WXS (iniciativa pro W3C XML Schema). Dnes se používá spíše zkratka XSD (tak se také budeme odkazovat na XML Schema v tomto článku).

XSD je alternativou k jiným XML schématům jako je např. DTD. Tedy jako všechna schémata definuje soustavu specifikací a pravidel, jak má vypadat XML dokument, aby byl validní. XSD je však „robustnější“ jazyk než DTD - je rozšiřitelný vůči změnám v budoucnu, podporuje datové typy a jmenné prostory (namespace). XSD se zapisuje pomocí jazyka XML.

Význam XSD[editovat | editovat zdroj]

Smyslem XSD je definovat legální „stavební kameny“ dokumentu XML. Dokument XSD definuje

  • elementy a atributy, které se mohou objevit v dokumentu XML
  • které elementy jsou „podelementy“ jiných
  • pořadí a počet „podelementů“
  • „obsah“ elementu (zda je prázdný či obsahuje text)
  • datový typ elementů a atributů
  • výchozí a fixní hodnoty elementů a atributů

Výhody použití[editovat | editovat zdroj]

Následují některé významné vlastnosti, které plynou z použití XSD.

Je založené na XML[editovat | editovat zdroj]

XSD je založené na XML, zapisuje se pomocí jazyka XML. Protože XSD je XML, dokumenty XSD lze

  • analyzovat a procházet XML parserem (lze použít již hotový)
  • manipulovat XSD schéma pomocí XML DOM
  • transformovat schéma pomocí XSLT
  • validovat XSD pomocí XSD schématu

Podporuje datové typy[editovat | editovat zdroj]

XSD definuje elementární datové typy jako je řetězec, číslo, datum apod. V rámci XSD lze definovat i vlastní datové typy, složené z elementárních či již vytvořených vlastních datových typů. Vzniká tedy hierarchie datových typů. Podpora datových typů ulehčuje

  • popis přípustného obsahu dokumentu
  • validaci (ověření správnosti) dokumentu
  • práci s daty uloženými v databázi
  • konverzi mezi různými datovými typy

Bezchybnost přenášených dat[editovat | editovat zdroj]

Při přenosu dat je vhodné, aby tvůrce i příjemce dat chápali data stejným způsobem a měli stejná očekávání. Pomocí XSD lze definovat strukturu dat a tedy definovat správný dotaz i očekávání příjemce dat.

Rozšiřitelnost[editovat | editovat zdroj]

Rozšiřitelnost je možná díky zápisu pomocí XML, umožňuje

  • opětovné použití schémat v jiných dokumentech,
  • tvorbu nových datových typů za použití již existujících schémat a
  • použití vícera schémat v rámci jednoho dokumentu.

Příklad[editovat | editovat zdroj]

XML dokument[editovat | editovat zdroj]

Následuje jednoduchý XML dokument, který nese informace o wikipedistovi (jméno, příjmení a počet editací).

 <wikipedista uid="Novak">
    <jmeno>Jirka</jmeno>
    <prijmeni>Novák</prijmeni>
    <pocetEditaci>152</pocetEditaci>
 </wikipedista>

XSD dokument[editovat | editovat zdroj]

Následující XSD schéma popisuje strukturu XML dokumentu, jemuž odpovídá ukázka výše. Z příkladu níže vidíme, že element wikipedista je komplexní datový typ, obsahující dva elementy elementárního typu řetězec a jeden element elementárního typu celé číslo. Dále obsahuje atribut uid s hodnotou také elementárního typu řetězec.

 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="wikipedista">
    <xs:complexType> 
        <xs:sequence>    
            <xs:element name="jmeno" type="xs:string"></xs:element> 
            <xs:element name="prijmeni" type="xs:string"></xs:element> 
            <xs:element name="pocetEditaci" type="xs:integer"></xs:element> 
        </xs:sequence>
        <xs:attribute name="uid" type="xs:string"></xs:attribute> 
    </xs:complexType>                                        
 </xs:element>
 </xs:schema>

Připojení XSD k dokumentu[editovat | editovat zdroj]

 <?xml version="1.0" encoding="UTF-8"?>
 <wikipedista xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
              xsi:noNamespaceSchemaLocation="wikipedista.xsd" 
              uid="Novak">
   <jmeno>Jirka</jmeno>
   <prijmeni>Novák</prijmeni>
   <pocetEditaci>152</pocetEditaci>
 </wikipedista>


Související články[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. XML and Semantic Web W3C Standards Timeline [online]. 2013-06-03 [cit. 2013-06-02]. Dostupné v archivu pořízeném dne 2013-04-24. 

Externí odkazy[editovat | editovat zdroj]