Summary of XML Schema Definition (XSD) Guide
XML Schema Definition (XSD) Guide for Students
Úvod
XML Schema Definition (XSD) je formální jazyk pro popis struktury a datových typů XML dokumentů. Umožňuje přesnou validaci XML — nejen syntaktickou (well-formedness), ale i obsahovou (typy, počet prvků, pořadí, hodnoty atributů apod.). Tento materiál shrnuje základní koncepty XSD, návrhové vzory a praktické příklady.
Definice: XML Schema (XSD) je XML dokument (soubor s příponou .xsd), který popisuje povolenou strukturu, datové typy a omezení pro XML instance.
Základní pojmy
Proč používat XSD
- Specifikovat datový formát a pravidla pro tvorbu XML dokumentů
- Automatická validace před dalším zpracováním
- Určit přesné datové typy (např. datum, číslo)
- Definovat povinné/volitelné prvky a opakování
Well-formed vs Valid
- Well-formed: XML dokument dodržuje syntaxi XML (správné uzavírání tagů, escapování apod.)
- Valid: XML je navíc v souladu s definovaným XSD (struktura a datové typy)
Struktura XSD souboru
- Kořenový element: xs:schema
- Deklarace namespace: xmlns:xs="http://www.w3.org/2001/XMLSchema"
- Volitelně targetNamespace, elementFormDefault (qualified/unqualified)
Definice: elementFormDefault = "qualified" znamená, že lokální elementy musí v instanci používat jmenný prostor (namespace).
Typy obsahu
xs:simpleType
- Obsahuje pouze text (bez potomků) a může mít restrikce (enumeration, pattern, length, minLength, maxLength, fractionDigits, totalDigits, whiteSpace)
- Používá se pro elementy i atributy
Příklad jednoduchého elementu:
<xs:element name="age" type="xs:integer"/>
xs:complexType
- Elementy s potomky, atributy nebo obojím
- Obsahové modely: xs:sequence, xs:choice, xs:all
Příklad:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
Pořadí a opakování prvků
- xs:sequence: přesné pořadí
- xs:choice: vybere se právě jeden z uvedených prvků
- xs:all: prvky mohou být v libovolném pořadí, každý 0 nebo 1 krát
Parametry opakování: minOccurs, maxOccurs (např. maxOccurs="unbounded")
Příklad opakování:
<xs:element name="owner" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
Atributy
- Deklarace: <xs:attribute name="att_name" type="xs:string" use="optional|required" default="..." fixed="..."/>
- default: parser doplní hodnotu, pokud atribut chybí
- fixed: hodnota je pevná a nelze ji změnit
Restrikce a omezení hodnot
- enumeration, pattern (regex), length, minLength, maxLength, fractionDigits, totalDigits, minInclusive, maxInclusive, minExclusive, maxExclusive, whiteSpace
Příklad enumerace a patternu:
<xs:element name="color">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="red"/>
<xs:enumeration value="green"/>
<xs:enumeration value="blue"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="plate">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z0-9]{7}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Definice: xs:pattern používá Unicode regular expressions (úroveň 1). Vzory musí být záporně na jednom řádku.
Jmenné prostory a reference
- Pro připojení XSD k XML instanci se používá atribut xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" a xsi:schemaLocation = "namespace path/to/schema.xsd" nebo xsi:noNamespaceSchemaLocation pokud není targetNamespace
- elementFormDefault a targetNamespace určují, které elementy jsou kvalifikované
Příklad připojení:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com/persons persons.xsd">
...
</root>
Already have an account? Sign in
XML Schema (XSD) přehled
Klíčové pojmy: XSD popisuje strukturu a datové typy XML dokumentů, Rozdíl: well-formed kontroluje syntaxi, valid kontroluje proti XSD, xs:simpleType pro textové hodnoty, xs:complexType pro elementy s potomky/atributy, Pořadí: sequence, choice, all; opakování: minOccurs, maxOccurs, Atributy: use=optional|required, default vs fixed, Omezení: enumeration, pattern, length, min/maxInclusive/Exclusive, fractionDigits, Jmenné prostory: xmlns:xsi a xsi:schemaLocation propojují XML s XSD, Návrhové vzory: Russian Doll, Salami Slice, Venetian Blind, Group a attributeGroup pro opakované použití sad prvků/atributů, Praktické kroky validace: well-formed, správné namespace, nástroje jako xmllint