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

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

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>
Zaregistruj se pro celé shrnutí
FlashcardsKnowledge testSummaryPodcastMindmap
Start for free

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

## Ú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: ```xml <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: ```xml <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í: ```xml <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: ```xml <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í: ```xml <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/persons persons.xsd"> ... </root> ```