Příklad XSD
On 29 září, 2021 by adminV této kapitole si ukážeme, jak napsat schéma XML. Dozvíte se také, že schéma lze zapsat různými způsoby.
Dokument XML
Podíváme se na tento dokument XML s názvem „shiporder.xml“:
Vytvoření schématu XML
Nyní chceme vytvořit schéma pro výše uvedený dokument XML.
Začneme otevřením nového souboru, který nazveme „shiporder.xsd“. Při vytváření schématu bychom mohli jednoduše sledovat strukturu v dokumentu XML a definovat jednotlivé prvky tak, jak je najdeme. Začneme standardní deklarací XML, po které bude následovat element xs:schema, který definuje schéma:
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema“>
….
</xs:schema>
V uvedeném schématu používáme standardní jmenný prostor (xs) a URI spojený s tímto jmenným prostorem je definice jazyka Schema, která má standardní hodnotu http://www.w3.org/2001/XMLSchema.
Dále musíme definovat element „shiporder“. Tento prvek má atribut a obsahuje další prvky, proto jej považujeme za složený typ. Podřízené prvky elementu „shiporder“ jsou obklopeny elementem xs:sequence, který definuje uspořádanou posloupnost dílčích prvků:
<xs:complexType>
<xs:sequence>
….
</xs:sequence>
</xs:complexType>
</xs:element>
Pak musíme definovat element „orderperson“ jako jednoduchý typ (protože neobsahuje žádné atributy ani jiné elementy). Typ (xs:string) je opatřen prefixem jmenného prostoru spojeným se schématem XML, který označuje předdefinovaný datový typ schématu:
Dále musíme definovat dva elementy, které jsou složeného typu: „shipto“ a „item“. Začneme definicí elementu „shipto“:
Pomocí schémat můžeme definovat počet možných výskytů elementu pomocí atributů maxOccurs a minOccurs. maxOccurs určuje maximální počet výskytů elementu a minOccurs určuje minimální počet výskytů elementu. Výchozí hodnota pro maxOccurs i minOccurs je 1!
Nyní můžeme definovat element „item“. Tento prvek se může uvnitř prvku „shiporder“ vyskytovat vícekrát. To se určuje nastavením atributu maxOccurs elementu „item“ na hodnotu „unbounded“, což znamená, že se element „item“ může vyskytovat tolikrát, kolikrát si autor přeje. Všimněte si, že prvek „note“ je nepovinný. To jsme určili nastavením atributu minOccurs na nulu:
Nyní můžeme deklarovat atribut elementu „shiporder“. Protože se jedná o povinný atribut, uvedeme use=“required“.
Poznámka: Deklarace atributů musí být vždy na posledním místě:
Tady je kompletní výpis souboru schématu s názvem „shiporder.xsd“:
Rozdělení schématu
Předchozí způsob návrhu je velmi jednoduchý, ale může být obtížný na čtení a údržbu, pokud jsou dokumenty složité.
Další metoda návrhu je založena na tom, že nejprve definujeme všechny prvky a atributy a pak na ně odkazujeme pomocí atributu ref.
Tady je nový návrh souboru schématu („shiporder.xsd“):
Použití pojmenovaných typů
Třetí metoda návrhu definuje třídy nebo typy, což nám umožňuje opakované použití definic prvků. To se provádí tak, že pojmenujeme elementy simpleTypes a complexTypes a pak na ně odkážeme prostřednictvím atributu type elementu.
Tady je třetí návrh souboru schématu („shiporder.xsd“):
Prvek restriction označuje, že datový typ je odvozen z datového typu jmenného prostoru schématu W3C XML. Následující fragment tedy znamená, že hodnota elementu nebo atributu musí být řetězcová:
Element restriction se častěji používá k použití omezení na elementy. Podívejte se na následující řádky z výše uvedeného schématu:
<xs:restriction base=“xs:string“>
<xs:pattern value=“{6}“/>
</xs:restriction>
</xs:simpleType>
To znamená, že hodnota prvku nebo atributu musí být řetězec, musí mít přesně šest znaků za sebou a tyto znaky musí být číslo od 0 do 9. To znamená, že hodnota prvku nebo atributu musí být řetězec.
Napsat komentář