XML Schémata

XML Schémata

  1. Nahrajte si ukázkové dokumenty a schémata

    Schéma faktura.xsd obsahuje ukázku schématu, které nepoužívá jmenné prostory. faktura2.xsd je schéma, které definuje cílový jmenný prostor. Odpovídající instance dokumentů XML jsou faktura-schema.xml a faktura-schema2.xml.

  2. Zkuste si ukázkový dokument faktura-schema.xml zvalidovat pomocí příkazu

    xerces -v -s jméno_xml_dokumentu

    a pomocí zabudované funkce v editoru oXygen, XML Spy nebo jEdit.

  3. Zkuste v dokumentu napáchat chyby a podívejte se, jak se projeví při validaci.

  4. Prohlédněte si specifikace XML schémat, slidy z přednášky a tutoriál a zkuste si měnit různé věci v hotovém schématu a dokumentu

  5. Můžete vyzkoušet i ostatní schémata a dokumenty, které jste si stáhli. Pokud nemá dokument připojeno schéma, můžete k jeho validaci použít jing.

    jing schéma dokument

    Jing zvládá validaci oproti DTD, XML Schema a Relax NG.

Vytvoření schématu

  • Pro dokument objednavka.xml, který byl mezi ukázkovými dokumenty, vytvořte XML schéma. Snažte se co nejlépe postihnout přípustnou strukturu a povolené hodnoty v dokumentu.

  • Schéma vytvořte buď ručně, nebo použijte vizuální návrhář v editoru XML.

  • Připojte schéma k dokumentu tak, aby dokument šel zvalidovat (více informací).

Schéma dokumentu a jmenné prostory

  • Zkopírujte si objednávku do nového souboru a upravte ji tak, aby byly všechny její elementy ve jmenném prostoru urn:x-eshop:document-schemas:purchase-order.

  • Upravte schéma a způsb jeho připojení k dokumentu tak, aby šel dokument zvalidovat.

Definice unikátního klíče

  • Ve schématu pro objednávku nepoužívající jmenné prostory definujte unikátní klíč, který zajistí, že se v objednávce nevyskytnou dvě položky se stejným kódem. Přidejte pak do objednávky duplicitní položku a zkuste, zda ji validace odhalí.

  • Podobný klíč přidejte i do schématu, který používá jmenné prostory. Dejte si pozor na to, že v XPath výrazu je potřeba před elementy patřící do nějakého jmenného prostoru psát prefix, který musí být předem deklarován. Např:

    <xs:selector xpath="o:položka" xmlns:o="urn:x-eshop:document-schemas:purchase-order"/>

    místo

    <xs:selector xpath="položka"/>