Nápověda:Použití RELAX NG pro popis XML
Z VirtlabWiki
Verze z 10:08, 2. 9. 2007 Kuc274 (Diskuse | příspěvky) (PHP) ← Předchozí porovnání |
Verze z 10:36, 2. 9. 2007 Kuc274 (Diskuse | příspěvky) Následující porovnání → |
||
Řádka 12: | Řádka 12: | ||
- | == Jak na to? == | + | == 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 :-) ). | 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 :-) ). | ||
Řádka 33: | Řádka 33: | ||
Odkazy: | Odkazy: | ||
- | http://cz.php.net/manual/cs/ref.dom.php | + | * http://cz.php.net/manual/cs/ref.dom.php |
+ | * http://en.wikipedia.org/wiki/RELAX_NG |
Verze z 10:36, 2. 9. 2007
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 :-) ).
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:
xmmlint -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ů.
Validace v PHP
Jazyk PHP (ve verzi 5) má přímo zabudovánu podporu pro validaci proti tomuto schématu. Jedná se o několik tříd z rodiny DOM (Document Object Model). Pro validaci nám stačí napsat pouze pár řádků:
$dom = new DOMDocument(); $dom->load("soubor_k_validaci.xml"); $vysledek = $d->relaxNGValidate("tady_je_RELAXNG_schema.rng");
Odkazy: