Nápověda:Použití RELAX NG pro popis XML

Z VirtlabWiki

Verze z 20:39, 15. 8. 2008; zobrazit aktuální verzi
← Starší verze | Novější verze →
Přejít na: navigace, hledání

Obsah

O co jde?

RELAX NG (REgular LAnguage for XML Next Generation) je jeden z mnoha jazyků pro popis struktury XML. Narozdíl od DTD, které je starší, umožňuje použití datových typů. Můžeme například specifikovat, že jde o číslo nebo řetězec a navíc určit jeho minimální a maximální hodnotu.

Např. chceme, aby element "heslo" byl řetězec s minimálně 4 a maximálně 20 znaky:

<element name="heslo">
  <data type="string">
    <param name="minLength">4</param>
    <param name="maxLength">20</param>
  </data>
</element>


Jak na validaci

Přestože se nejedná o jazyk oficiálně schválený W3C (tato skupina vytvořila vlastní XML schéma), je hojně používaný (dokonce prý i některými pracovními skupinami ve W3C :-) ).


xmllint

Pro validaci XML dokumentů proti RELAX NG existuje množství nástrojů. V linuxu je standardně obsažena utilitka xmllint, která dokáže XML validovat proti mnoha jazykům (DTD, W3C XML schema, RELAX NG,....)

Validace proti RELAX NG:

xmllint -relaxng relax_schema.rng k_validaci.xml

Tento příkaz načte schéma ze souboru relax_schema.rng, zkontroluje, zda toto schéma neobsahuje syntaktickou chybu a poté jej aplikuje na xml soubor k validaci. Na výstup pak vypíše odpověď, zda soubor validací prošel nebo ne. Součástí výstupu je také celý validovaný soubor. Ten však nemusíme vždy chtít vypisovat - v tom případě použijeme ještě parametr -noout, který způsobí potlačení "zbytečných" výpisů.

JING:

Také můžeme pro validaci použít Java validator:Jing.

java –jar jing.jar [-c –e …] <soubor schématu> [<XML dokument>]
  • -c: schéma používá kompaktní syntaxi
  • -e enc: určení kódování pro načtení schématu

XML soubor je volitelný. Pokud zadáme jen soubor schématu bude se validovat schéma, pokud uvedeme také soubor XML provede se validace daného souboru proti uvedenému schématu.

Pokud je schéma správné a xml soubor validní proti uvedenému schématu, program Jing negeneruje žádný výpis. Pokud validace neproběhla správně Jing vypíše chyby.


Xerces

Je parser a validator od apache.org.

Odkazy:

Osobní nástroje