Jazyk pro transformace XML
Vzhled
Jazyk pro transformace XML (anglicky XML transformation language) je programovací jazyk navržený pro transformaci vstupního XML dokumentu na výstupní dokument požadovaného formátu.
Existují dva speciální případy transformace:
- XML na XML: výstupní dokument je XML dokument.
- XML na data: výstupní dokument je proud bytů.
XML na XML
[editovat | editovat zdroj]Protože výstupem transformace XML na XML je XML dokument, lze pomocí těchto transformací vytvářet XML kolony.
XML na Data
[editovat | editovat zdroj]Transformace XML (EXtensible Markup Language) na data obsahuje některé důležité případy. K nejvýznamnějším patří XML na HTML (HyperText Markup Language), protože HTML dokument (ve verzích 3 a 4) není XML dokumentem: Tím se staly až novější XHTML a HTML5.
Dostupné nástroje
[editovat | editovat zdroj]- XSLT
- XSLT je nejznámější jazyk pro XML transformace. W3C doporučení popisující XSLT 1.0 bylo publikováno v roce 1999 spolu s XPath 1.0 a od té doby bylo několikrát implementováno. Pro verze XSLT 2.0 vyšlo W3C doporučení v lednu 2007 a také jsou dostupné první implementace jako Saxon 8.
- XQuery
- Přestože jeho jméno obsahuje slovo „dotaz“, XQuery je plně funkcionální jazyk. Je to de facto standard používaný firmami Microsoft, Oracle, DB2, Mark Logic, atd., a je základem pro webový programovací model XRX a pro verze 1.0 existuje W3C doporučení. Je založený na XPath 2.0, ale protože není napsán přímo v XML jako XSLT, je jeho syntaxe mnohem jednodušší. Programy v XQuery nesmí mít vedlejší účinky jako v XSLT, ale poskytují téměř stejnou funkcionalitu (například: deklarování proměnných a funkcí, iterace přes posloupnosti, používání typy W3C schema), i když syntaxe program je úplně jiná. XQuery je řízený logikou, používají FOR, WHERE a skládání funkcí (například fn:concat("<html>", generuje-tělo(), "</html>")). Naproti tomu XSLT je řízený daty (push model zpracování), kde určité podmínky splněné ve vstupním dokumentu spouštějí provedení šablon místo provádění kódu v pořadí, ve kterém je napsán.
- XProc
- XProc je XML Pipeline jazyk. XProc 1.0 W3C doporučení bylo publikováno v květnu 2010.
- XML document transform
- Je standard firmy Microsoft pro provádění jednoduchých transformací XML dokumentů. Je primárně určený pro vytváření Web.config souborů pro IIS (Config Transforms). Jiné implementace umožňují, aby byl používán pro obecné konfigurační soubory jako je build time (Slow Cheetah) nebo z příkazového řádku (CTT).
- STX
- STX (Streaming Transformations for XML) je inspirován XSLT, ale navržený tak, aby umožňoval jednoprůchodový transformační proces, který umožní proudové zpracování. Implementace jsou dostupné v Javě[1] a v Perlu[2].
- XML Script
- XML Script je imperativní skriptovací jazyk inspirovaný jazykem Perl používající XML syntaxi. XML Script podporuje XPath a vlastní proprietární DSLPath pro výběr uzlů ze vstupního stromu.
- FXT
- FXT je funkcionální XML transformační nástroj implementovaný ve standardním ML.
- XDuce
- XDuce je typovaný jazyk s odlehčenou syntaxí v porovnání s XSLT. Je napsaný v ML.
- CDuce
- CDuce rozšiřuje XDuce na obecný funkcionální programovací jazyk[3].
- XACT
- XACT je systém pro programování XML transformací v Javě. Používá XML šablony jako immutable hodnoty a statickou analýzu pro zajištění typové bezpečnosti pomocí XML Schema typů[4].
- XFun
- XFun je funkcionální jazyk X-Fun pro definování transformací mezi datovými stromy XML, který poskytuje instrukce pro shredding. X-Fun lze chápat jako rozšíření Frischova jazyka XStream o výstupní shredding, kde vyhledávání vzorků je nahrazen navigací ve stromě pomocí XPath výrazů[5].
- XStream
- XStream je jednoduchý funkcionální transformační jazyk pro XML dokumenty založené na CAML. XML transformace napsané v XStream jsou vyhodnocované proudově: pokud je to možné, složky výstupu jsou vypočítané a vyrobené během syntaktickou analýzu vstupního dokumentu. Některé transformace tedy mohou být aplikovány na rozsáhlé XML dokumenty, které se ani nevejdou do paměti. Překladač XStream je distribuovaný s svobodnou softwarovou licencí CeCILL.
- Xtatic
- Xtatic používá metody z XDuce na C#[6].
- HaXml
- HaXml je knihovna a kolekce nástrojů pro zápis XML transformací v Haskell. Jeho přístup je velmi konzistentní a výkonný[7][8]. Byly publikovány i novější články, např. Haskell XML Toolbox[9], které vycházejí z myšlenek HaXml a HXML, ale používají obecnější přístup ke zpracování XML.
- XMLambda
- XMLambda (XMλ) popsal v roce 1999 Erik Meijer a Mark Shields[10]. Žádná implementace není dostupná.
- FleXML
- FleXML je jazyk na zpracování XML, který poprvé implementoval Kristofer Rose. Jeho principem je provádět činnosti na XML DTD popisující instrukce pro zpracování pro libovolnou podmnožinu DTD pravidel.
- Scala
- Scala je obecný funkcionální a objektově orientovaný jazyk se zvláštní podporou pro XML transformace ve formě vyhledávání XML vzorků, literálů a výrazů a se standardními XML knihovnami[11].
- LINQ to XML
- LINQ to XML je programovací API s .NET 3.5 syntaxí dostupnou v jazyce C#, Visual Basic .NET a některých jiných .NET jazycích. LINQ je primárně navržené jako dotazovací jazyk, ale podporuje i XML transformace.
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku XML transformation language na anglické Wikipedii.
- ↑ Joost - The Streaming XML Transformer
- ↑ Modul XML::STX pro Perl
- ↑ Domovská stránka CDuce
- ↑ Domovská stránka XACT
- ↑ A Functional Language for Hyperstreaming XSLT
- ↑ Domovská stránka Xtatic
- ↑ Článek o HaXml publikovaný v roce 1999. www.cs.york.ac.uk [online]. [cit. 2014-09-15]. Dostupné v archivu pořízeném z originálu dne 2014-10-18.
- ↑ Článek na IBM developerWorks
- ↑ HXT- Haskell XML Toolbox 9.2.0. www.fh-wedel.de [online]. [cit. 2014-09-15]. Dostupné v archivu pořízeném dne 2008-06-22.
- ↑ Domovská stránka XMLambda. www.cartesianclosed.com [online]. [cit. 2014-09-15]. Dostupné v archivu pořízeném dne 2005-11-23.
- ↑ FANCELLU, Dino; NARMONTAS, William. XML Processing in Scala. XML London 2014. June 2014. ISBN 978-0-9926471-1-7. DOI 10.14337/XMLLondon14.Narmontas01.