Hlavní navigace

Akta X: Jazyk XML Pipeline

Petr Cimprich

XML Pipeline bude nový standard pro popis postupu zpracování dokumentů XML. Nyní je konečně k dispozici první pracovní verze jeho specifikace. Co je z ní možné vyčíst? K čemu se XML Pipeline vlastně hodí? Jak vypadá návrh jeho syntaxe? Jedná se o úplnou novinku, nebo už něco podobného známe?

V květnu letošního roku jsem se krátce zmínil o nově vznikajícím jazyku XML Pipeline s tím, že se k tématu určitě brzy vrátím. Teď je vhodná příležitost, protože pracovní skupina W3C XML Processing Model koncem září konečně zveřejnila první pracovní verzi.

XML Pipeline (kratší název je trochu nekonzistentně XProc) je jazyk popisující operace s dokumenty XML. Popisuje posloupnost operací prováděných na vstupní kolekci dokumentů XML. Výsledkem je výstupní kolekce dokumentů XML. Tedy přesněji, na vstupu i výstupu může být i jiný formát než XML, ale to není podstatné. Celá posloupnost se skládá z komponent, které také na vstupu přijímají a na výstupu produkují kolekci dokumentů. Komponenty mohou být dvojího druhu: krok nebo konstrukt. Krok představuje atomickou operaci, například expanzi referencí XInclude, transformaci XSLT nebo validaci proti schématu. Konstrukt je složitější entita, která může obsahovat jiné komponenty a také logiku řídící tok dokumentů komponentou. Konstrukty jazyka XProc umožňují například podmínečné zpracování, iteraci přes kolekce dokumentů a zachycení výjimek.

Každá komponenta definuje své vstupní a výstupní porty, každá může mít libovolný počet parametrů. Proud operací popsaný jazykem XProc je pak necyklický orientovaný graf komponent spojených svými výstupními a vstupními porty.

Dokument může být vstupnímu portu přiřazen jedním ze tří způsobů. Pomocí URL, určením výstupního portu jiné komponenty nebo přímým vložením dokumentu. Jednoduchý krok generuje svůj výstupní dokument na implicitní výstupní port result, u složitějších konstruktů je nutné deklarovat výstupní port či porty.

Uveďme si příklad nepříliš složitého proudu operací o dvou krocích, s jedním vstupním a jedním výstupním portem. První krok čte dokument ze vstupního portu proudu a expanduje v něm vsuvky XInclude. Výsledný dokument je pak transformován pomocí XSLT na dokument XHTML, jenž je odeslán na výstupní port. Šablona pro XSLT je odkazována pomocí URL. Takto vypadá schéma procesu:

Xproc

A takto zápis v syntaxi XML Pipeline. Syntaxi prosím berte s rezervou. Zatím je známa jen první pracovní verze, specifikace není úplná a pravděpodobně se ještě bude měnit. URI jmenného prostoru XProc zatím nebylo stanoveno.

<p:pipeline name="expand-and-transform" xmlns:p="...">

  <p:declare-input port="document"/>

  <p:declare-output port="result" step="docbook-to-xhtml" source="result"/>

  <p:step name="expand" type="p:xinclude">
    <p:input name="document" step="expand-and-transform" source="document"/>
  </p:step>

  <p:step name="docbook-to-xhtml" type="p:xslt">
    <p:input name="document" step="expand" source="result"/>

    <p:input name="stylesheet" href="xhtml/docbook.xsl"/>
  </p:step>

</p:pipeline>

Implementace jazyka XML Pipeline musí kromě všech konstruktů znát také sadu standardních typů atomických kroků. To jsou v naší ukázce typy p:xinclude a p:xslt. Procesor musí vědět, jaké vstupní porty a parametry má pro jednotlivé kroky očekávat a jakým způsobem vygenerovat výstup. Knihovna standardních komponent zatím v první verzi specifikace není definována. Mimo standardní komponety bude možné definovat také vlastní rozšíření a knihovny komponent pro opakované použití.

XML Pipeline najde uplatnění v první řadě při popisu komplexních publikačních procesů. Není náhodou, že se editace ujal Norman Walsh, jehož hlavním polem působnosti je DocBook. Využití při generování obsahu on-demand typickém pro webové aplikace bude limitováno požadavky na rychlost zpracování, ale i tady by jazyk XML Pipeline mohl najit své místo. Některé frameworky, jako například Cocoon, úspěšně používají velmi podobné principy jako jazyk XML Pipeline už dnes.

Našli jste v článku chybu?

16. 10. 2006 15:38

Jakub Hozak (neregistrovaný)
Vzhledem ke svate valce je to sice off-topic, nicmene koho zajima XML Pipline zkuste se podivat na Orbeon. Lidi okolo nej spolupracovali na ty specifikaci. Je to aplikacni server na XML bazi postaveny nad J2EE. Mimochodem podporuje i server-side implementaci XForms, kvuli cemuz sem do neho treba ja naboural.

14. 10. 2006 3:24

Palo (neregistrovaný)
Ale ja som robil s LISPom a nerozumiem preco by prave LISP malo byt to prave programovanie. Existuju aj ine prinicipy nez ktore ma LISP. Vacsina dnesnych jazykov ma vsetky tie ktore ma aj LISP. Maju ale aj ine ktore v LISPe nemate alebo ich komplikovane obchadzate. OOP a AOP nech nam sluzia ako priklad.
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: Propustili je z Avastu, už po nich sahá ESET

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

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Vitalia.cz: Vychytané vály a válečky na vánoční cukroví

Vychytané vály a válečky na vánoční cukroví

Měšec.cz: Komu musí od ledna zvýšit mzdu?

Komu musí od ledna zvýšit mzdu?

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

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

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

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Měšec.cz: Stavební spoření: alternativa i pro seniory

Stavební spoření: alternativa i pro seniory

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

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

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

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

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

Recenze Westworld: zavraždit a...

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

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

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