26.11. 2008
Užitečné nástroje pro Relax NG
(Doplněno!) V sobotu jsem zde doporučova Relax NG pro tvorbu XML schémat. Plnohodnotný vývoj schématu se ale neobejde bez validátor, který by ověřil validitu schéma a následně zvalidoval soubory proti tomuto schématu. Stejně tak může chybět nástroj pro konverzi, který pomůže vytvořit verze v jiných jazycích pro XML schéma. Abyste nemuseli bloudit a hledat, dám tipy na nástroje, které používám již od prvního seznámení s Relax NG …
Převod mezi jednotlivými formáty pro tvorbu XML schémat zvládá aplikace Trang. Jde o konzolovou aplikaci implementovanou v Javě. V instalaci je přibalený podrobný manuál se seznamem příkazů. Zvládá konverze mezi DTD, WXS a Relax NG v obou syntaxích (XML i kompaktní).
Validaci schémat a dokumentů proti těmto schématům umí aplikace Jing. Opět se jedná o konzolovou aplikaci implementovanou v Javě – obě dvě jsou od stejných tvůrců (tj. Thai Open Source Software Center Ltd). Jing podporuje Relax NG v obou syntaxích a experimentálně několik dalších technologií. Důležité parametry volání:
-c: schéma používá kompaktní syntaxi-e enc: určení kódování pro načtení schématu
Volání pro spuštění:
java –jar jing.jar [-c –e …] <soubor schématu> [<XML dokument>]
XML dokument je volitelný. Pokud jej zadáte, bude se validovat proti určenému schématu. Pokud zadáte pouze cestu ke schématu, bude se validovat to.
Doplněno 26.11. 2008: Jiří Kosek avizoval návrat tvůrce nástrojů Jing a Trang do světa XML. Pro tento projekt to znamená další rozvoj. Od nynějška můžete projekt najít na Google Code.
27.12. 2006
Esej o tom, jestli se Relax NG skutečně prosazuje
Relax NG má stále více příznivců, a to i uvnitř konsorcia W3C, které vytvořilo a propaguje konkurenční standard XML Schema. Předznamenává tento vývoj začátek nadvlády Relaxu NG a postupný útlum jazyka W3C XML Schema? Mohou oba jazyky dlouhodobě existovat vedle sebe?
Právě o tom se polemizuje v posledním vydání Akt X na root.cz. Někdy, myslím, že to byl český XML guru, kdo označil jazyk Relax NG jako ideál pro různé geeky a W3C XML Schema jako správný korporátní standard. Já otestoval obě tyto technologie a být militantně zaměřený, jsem pro okamžité globální použití právě OASIS standardu. Ale má taková válka smysl?
NE! Je na každém, jakou technologii bude používat. Důležité je její maximální možné ovládnutí. Vzhledem k faktu, že díky vhodným nástrojům je možné pohodlně schémata validovat a také převádět mezi DTD, W3C XML Schema a Relax NG, jak se nám zlíbí, je čistě na vás, jakou z nich zvolíte. Já si udělal malé porovnání a jako vítěz vzešel právě Relax NG Compact Syntax.
Rozhodnutí je tedy na vás. A jaká je má volba pro XML?
- Vývojové prostředí: oXygen
- Jazyk pro tvorbu schémat: Relax NG (v kompaktní syntaxi)
- Java API: XOM (ale to už jsem zde představil!)
- Dokumenty: DocBook v5.0
23.09. 2006
Navrhujeme XML schémata – technologie, zásady
Jaké jsou výhody a důvod tak velkého rozšíření formátu XML, o tom se píše leckde. Jeho jednoduchá syntaxe čitelná pro lidi a lehce zpracovatelná počítačem je důvodem úspěchu a faktu, že parser tohoto formátu najdete snad v každém programovacím jazyce – a v těch lepších si můžete také vybrat.
Syntaxe je jedna, ale ta nedefinuje elementy a atributy! K tomu je potřeba použit některé XML schéma – Document Type Definition, W3C XML Schema nebo Relax NG – jak vidíte, výběr je rozmanitý. Tak který si vybrat a které zatratit? Jak jsem se s touto otázkou vypořádal já na jednom projektu s komerčním potenciálem, to bude předmětem následujících řádků příspěvku.
Aby byla aplikace maximálně přenositelná, nemohl jsem si dovolit zatratit žádnou z výše uvedených technologií. Zvolil jsem podobný přístup jako schéma formátu DocBook – normativně schéma definuji pomocí Relax NG a následně pomocí konverzního nástroje vytvořím i odpovídající implementaci v WXS a DTD. Tato konverze je téměř bezztrátová, resp. v případě DTD je ztrátová, ale to je dáno zastaralostí technologie a faktem neexistence možnosti definovat datové typy.
Nezapomeňte na jmenný prostor, který dovoluje další modularizaci schémat a vzájemné kombinování s již existujícícími i budoucími. Např. Sun Microsystems Inc. Má pro technologie Java™ Platform, Enterprise Edition 5 definován jmenný prostor na adrese http://java.sun.com/xml/ns/javaee/, která odkazuje na stránku se základními informacemi, odkazy na fyzické uložení schémat a také se odtud dostanete na dokumentaci.
A když používáme Relax NG, tak jedině jeho elegantní kompaktní syntaxi, která není tak „ukecaná jako XML verze,“ i když obě mají shodně vyjadřovací schopnosti. Co je lepší?
<element
name="dokument"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
xmlns="http://relaxng.org/ns/structure/1.0"
>
<attribute name="id">
<data type="positiveInteger"/>
</attribute>
<element name="jmeno">
<data type="string"/>
</element>
</element>
Nebo?
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
element dokument {
attribute id { xsd:positiveInteger },
element jmeno { xsd:string }
}
Výhody toho schématu chválit mohu, ale nebudu zde vytvářet žádný tutoriál, protože ten již publikoval Jiří Kosek – nejen pro Relax NG, ale také pro DTD, WXS, Schematron … a jako vždy doplnil o hodnotné rady z praxe.
17.07. 2006
DocBook a věčné zaklínání XML
Za rok, co studuji na Vysoké škole ekonomické v Praze, si cením tří zápočtů, jež jsem získal. Prvním je předmět Základy softwarového inženýrství, kde jsem měl tu čest se setkat s Rudolfem Pecinovským a ověřit si to, co se píše v mnoha knihách a praví nejedna lidová moudrost, tj. „V jednoduchosti je krása!“ a „Dvakrát měř, jednou řež!“ (a také, že být dobrý vývojář v objektově–orientovaných jazycích není vůbec jednoduché). Zbývající dva předměty – XML – Teorie a praxe značkovacích jazyků, Využití XML při tvorbě webových aplikací v PHP – přednášel známý guru Jirka Kosek. V podstatě šlo o intenzivní kurz a poskytnutí přehledu všeho, co se jen trochu XML týká. Ještě teď se divím, kde mi jaký detail, jaká zajímavé technologie unikla …
Jednou z mnou stále nedoceněných technologií je schéma DocBook, které p. Kosek tak usilovně propaguje a sám je důkazem, že jeho používání má své výhody. Protože jsem nikdy moc neholdoval programu MS Word, i když jeho použití je tak snadné, rozhodl jsem se prozkoumat všechny možnosti, které výše zmíněný formát pro tvorbu dokumentů poskytuje. Dokonce mě napadla myšlenka vytvoření nějakého „systému pro správu obsahu“ (CMS), který by jako vstupní a interní datový formát používal právě DocBook, ale o tom později.
Pokud chcete začít a nemáte schopnosti XML guru, doporučuji stáhnout XMLmind XML editor. Ač jde o WYSIWYG editor, jeho podpora tvorby validních dokumentů ve formátech XHTML a DocBook je dobrá. Má v sobě rovněž zabudovaný nástroj pro použití XSLT transformačních stylů a sám obsahuje styly pro převod z formátu DocBook do HTML. Styly sice nejsou dokonalé, ale pro začátek to stačí. Zkušenější si je mohou upravit nebo použít externí nástroje pro transformaci s vlasními styly. Výstup do dalších formátů je podmíněn instalací dalších nástrojů jako FOP, XEP, XFC …
Ale pozor! V současné době se dokončuje vývoj verze DocBook 5, která je normativně definována pomocí jazyka Relax NG. Pokud jste uživatelé verze 4, kterou primárně výše zmíněný editor podporuje, není vůbec špatné si přečíst The Transition Guide, která popisuje hlavní rozdíly (asi nejdůležitějším je zmiňované použití Relax NG a s ním umožňuje modularizace/rozšiřování, a také použití jménného prostor). Velice dobrým návodem je kniha DocBook 5: The Definitive Guide, kterou v tištěné podobě vydává nakladatelství O'Reilly, ale můžete si ji také stáhnout ve formátu HTML. V případě, že se chcete trochu více ponořit do transformace vašich dokumentů do jiných formátů, pomůže vám kniha DocBook XSL: The Complete Guide (Third Edition) volně dostupná ve formátu HTML.
A co dál? Trochu si pročtu vše, co je dostupné k tomuto formátu a začnu oprašovat vědomosti získáné ve výše zmíněných předmětech tak, abych (až na výjimky) nebyl závislý na aplikaci Word a naopak naplno využil přednosti formátu DocBook.
Poznámka: A ptáte se, co je s tím CMS? Dostal jsem nápad, který zde někdy možná popíšu, ale bohužel nemám čas na jeho realizaci (zatím). Škoda, hodilo by se to.
21.03. 2006
Slibný start XForms
Od vydání specifikace XML Forms (XForm) standartizačním konsorciem W3C uběhl nějaký pátek a já měl pocit, že snad zapadne jako vše, co sice má smysl a vizi, ale nezaujalo mnoho firem, komunitu … Když byl vydán alespoň krátký seznam FAQ, tak jej tehdy Sieg přeložil.
V novinkách konsorcia se objevilo několik odkazů, které stojí za pročtení. Zvláště, pokud Vás XForms zajímají! Vyšla totiž druhá edice specifikace, publikovány byly také rychlá referenční příručka, první a druhý díl příručky pro autory XHTML stránek a XSLT styl pro konverzi do XHTML! Co jsem slyšel, tak by měly být XForm alespoň z části podporovány v prohlížeči Firefox 1.5. Uvidíme, technologie je to zajímavá. A ještě dotaz. Neuvažuje někdo, že by některý z těchto dokumentů přeložil?
20.10. 2005
Validace dat přijatých z formuláře trochu jinak
Četl jsem si knihu Nová generace webových technologií a narazil jsem v ní na zajímavou myšlenku. Když zestručním ty 2 odstavce, ve kterých byla rozepsána, tak zněla asi takto: V současné době je interakce mezi uživatelem a webovou aplikací zprostředkována pomocí webových formulářů. Přijímaná data prochází až trojitou kontrolou – sadou skriptů na straně klienta, validací v aplikační vrstvě a kontrolou v databázi. Otázka zní, jestli by nebylo od věci vytvořit z formulářových dat (na straně klienta nebo serveru) nějakou XML strukturu a tu následně validovat proti příslušnému schématu XML. Přesné znění najdete ve výše zmiňované knize.
13.10. 2005
Vtipálci z konsorcia nemají co dělat
Moje prosby nebyly vyslyšeny! V době, kdy se sémantický Web jen pomalu začíná rozvíjet a chybí širší podpora jeho technologií a mnoho užitečných technologií není stále dokončeno, naši odborníci na XML ve W3C z nudy vydali další pracovní návrh technologie XFrames. Co je nového? Nevím, nevšiml jsem si. Snad jen implementace v DTD, XML Schema a Relax NG. A můj názor na to? Rámy byly největší omyl v historii Webu, tak proč je pořád oživují?
08.09. 2005
DTD stále žije
Jak jsem už psal, chtěl jsem do RailLogu implementovat načítání dat z XML a k tomu potřebuju vhodný formát. Řešení bylo napsání vlastního DTD. Jak na to. Nejlepší bylo zabrousit na stránky „XML guru“ Jiřího Koska a mrknout se do jeho seriálu o XML, DTD a všem, co k tomu patří. Určitě bude potřeba to DTD doladit. Možná by se hodil nějaký validátor či vizuální editační nástroj. Neví někdo o nějakém?
Doplněno 8.9. 2005: Kromě kratší reference od J. Koska jsem si pročetl i tutorial na W3Schools, který obsahuje kompletní popis DTD čtivou formou se spoustou jednoduchých příkladů. Následně jsem chtěl jak DTD, tak dokument podle něj napsaný - raillog.xml zvalidovat. Podle rady Filemona jsem si stáhnul Altova XML Spy 2005 Home Edition (zdarma) a provedl validaci v tomto editoru. Jak vypadá pracovní prostředí si můžete prohlédnout na následujícím screenshotu:
28.08. 2005
Používáte XML? Naučte se také XPath!
PHP modul SimpleXML, o kterém jsem psal posledně, se mi moc zalíbil a rozhodl jsem, že se naučím také XPath – když je v tomto modulu implementován. Tak jsem zabrousil na W3Schools a studoval ...
07.02. 2005
DocBook není tak špatný ...
Teď si připadám, jako bych znovu vynalezl kolo. Už několikrát jsem uvažoval, v jakém schématu (formátu) XML ukládat ty či ony data. Můžu vzpomenout například plánování jednoho neuskutečněného projektu s Aristem, který se točil kolem distribuce a hodnocení knih. A takových případů je více – článek, seznam knih, dokumentace. Pro všechny tyto data je podle mě nejvhodnější DocBook, který tak silně podporuje Jiří Kosek. Já osobně jsem tento formát dlouho ignoroval. Názor jsem změnil až po zběžném přečtení tutorialu Docbook – stručný úvod do tvorby a zpracování dokumentů.
No, myslím, že bych mohl prozradit, jak ty moje hrátky dopadly. Dal jsem dohromady Xerces a seznam některých knih z mojí knihovničky zapsaný v Docbooku. Výsledkem může být vše od prostého zobrazení, co že za knížky doma mám, až po službu, která si pamatuje obsah knihovniček jednotlivých uživatelů a umožňuje jim si knihy navzájem půjčovat. Jestli se chce někdo podívat pod pokličku, tak stačí napsat. Prostě další z nápadů, kterě vymýšlím při bezesných nocích tak kolem jedné hodiny ráno ...
