Hlavní navigace

Akta X: Validace stokrát jinak

Petr Cimprich 4. 6. 2007

Pojem validace dokumentu XML je sice přesně definován ve specifikaci XML 1.0, ale jeho význam se časem stále posouvá a rozšiřuje. S přibývajícími nástroji se proměňuje vztah dokumentu a schématu, postvalidační informace přibývají nebo jsou zcela odmítány. Objevil se návrh na nový validační jazyk.

Ke dnešnímu tématu mě inspirovaly dva články z blogu Jamese Clarka. Tento blog je relativně nový, funguje teprve od letošního března. Clark nemá potřebu dávat světu vědět o každém hnutí své mysli; za necelé tři měsíce vyprodukoval jen tři články. Kvalita ale v jeho případě výrazně převyšuje kvantitu.

Za přečtení stojí zatím poslední článek nazvaný Validation not necessarily harmful, což je reakce na starší post Validation considered harmful Marka Bakera. Baker píše o tom, že striktní validace může nadělat víc škody než užitku, protože nepředpokládá vývoj dokumentů a schémat. S tímto názorem by se dalo úspěšně polemizovat – odstraněním validačního kroku se může problém se změnou dokumentu „vyřešit“, ale také se může v procesu zpracování jen posunout o krok dál, kde už se případná chyba daleko hůře rozpoznává.

James Clark se ale zaměřuje na jiný aspekt a mimo jiné přichází s tvrzením, že validita není vlastností dokumentu, ale vztahem mezi dokumentem a schématem. Tato teze dobře vystihuje jeden důležitý, třebaže na první pohled možná ne docela nápadný rozdíl mezi přístupem jazyků W3C XML Schema a RelaxNG (jehož je Clark spoluautorem). XML Schema propojuje schéma se jmenným prostorem, čímž připisuje jmenným prostorům další význam. Totiž že elementy z jednoho jmenného prostoru patří k sobě a všechny se skládají do jednoho dokumentu popsaného jedním schématem. RelaxNG nic takového neříká a s názvy jmenných prostorů zachází jako s pouhými textovými řetězci sloužícími k odlišení lokálních jmen, přesně v intencích specifikaceNa­mespaces in XML 1.0. Tato vlastnost RNG, společně s opačným názorem na přidávání postvalidačních informací (RNG nic takového nezná), přestavuje mnohem hlubší rozdíl mezi oběma jazyky než více či méně elegantní syntaxe jednoho nebo druhého.

V dobách, kdy k validování dokumentů XML bylo k dispozici jen DTD, vše bylo jednodušší. Definice uvedená přímo ve specifikaci XML 1.0 říká, že dokument je validní, pokud je mu přiřazena deklarace DTD a pokud splňuje všechna její omezení. Validita je atributem dokumentu, každý dokument má nejvýše jedno své schéma. Ale už v dobách DTD bylo toto přímočaré pojetí validity narušeno existencí postvalidační informace (PSVI) – defaultními atributy. Možná se autoři XML 1.0 nechali inspirovat kvantovou fyzikou. Dokument, jehož validitu „změříme“, už není stejný, jako před měřením.

Jazyk XML Schema pozdvihl PSVI na vyšší úroveň. K defaultům přibyly datové typy. Dokument je validací natolik proměněn, že Eric van der Vlist neváhal prohlásit, že validace je transformací dokumentu. Zjištění validity je pak pouhým bočním efektem této transformace.

Jak vidno, chápání validace a validity se proměňuje a přibývajícím počtem validačních jazyků také fragmentuje. Validaci podle Schematronu nejlépe vyhovuje Clarkovo pojetí validity jako binární relace. V případě Schematronu je to dokonce ještě zřejmější. Dokument vyhovuje určitému schématu (splňuje jeho pravidla), může být tedy použít pro jisté účely. Pro jiné účely můžu mít úplně jinou sadu pravidel.

Ještě jeden článek z Clarkova blogu se zabývá validací a schématy. Název Do we need a new kind of schema language? je dostatečně výmluvný. Tento dlouhý a zajímavý článek popisuje, proč současné jazyky pro popis schématu příliš nepomáhají s mapováním z XML na datové struktury běžných programovacích jazyků a zpět. Jazyk XML Schema se o to částečně pokouší, ale trochu neobratně a navíc způsobem vhodným jen pro staticky typované jazyky. Clark navrhuje vytvoření úplně nového jazyka, který by integroval validaci a data binding, s přihlédnutím k potřebám dynamických jazyků, jako je Perl, Python, Ruby, apod.

Pracovní název možného nového validačního jazyka je TEDI (Type Expressions for Data Interchange). Základní schéma TEDI by mohlo být doplněno anotacemi pro jednotlivé programovací jazyky na jedné straně, a anotacemi pro XML, ale také třeba JASON na straně druhé. Jazyk jako TEDI by posunul smysl validace a PSVI zase o kus dál.

James Clark slibuje, že se bude vývojem jazyka TEDI dál zabývat. Tomu bychom vzhledem k faktu, že tento výjimečný vizionář už má za sebou milníky jako XSLT 1.0 nebo Relax NG, měli věnovat pozornost.

Našli jste v článku chybu?

5. 6. 2007 13:24

uživatel si přál zůstat v anonymitě
XML databaze je taky na hovno, jeste vic, nez striktni validace :))

5. 6. 2007 9:47

Almad (neregistrovaný)
Hej, to by mně taky zajímalo proč je nahovno. Taková nevalidní XML databáze...o_O
DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky