|
Article on other languages:
|
Transformace XSLT (eXtensible Stylesheet Language Transformations) slouží k převodům zdrojových dat ve formátu XML do libovolného jiného požadovaného formátu, nejčastěji HTML, jiného XML nebo libovolných jiných datových struktur.
Obecný úvodXSLT je transformace, která se provádí pomocí procesoru XSLT. Procesorem je míněn program podporující tuto transformaci. Procesor XSLT může být napsán v libovolném programovacím jazyce nebo využít knihovny XSLT daného programovacího jazyka. K provedení transformace jsou potřeba dva soubory:
Vlastnosti XSLTStandardní způsob transformování datTransformace se provádí pouze na známých datových strukturách. Tyto datové struktury, které a pomocí kterých se bude transformovat, jsou definovány mezinárodním konzorciem W3C. Správnost implementace a podpora všech standardem definovaných vlastností je v kompetenci a na zodpovědnosti autorů konkrétního procesoru XSLT. Mezinárodní podporaZdrojová data pro transformaci mohou obsahovat libovolné znakové sady, nejen angličtinu, ale též např. znaky s diakritikou nebo znaky asijských písem, popřípadě jejich kombinace. V zdrojovém dokumentu však musí být v záhlaví označeno kódování znaků. V poslední době se často užívá a je doporučeno užívat kódování UTF-8 pro správnou funkci jiných znaků než ASCII. Většina operačních systémů, programovacích jazyků a editorů je již podporou kódování UTF-8 vybavena. Vysoká přístupnost k datůmSoubory pro XSLT jsou v textovém formátu, který je čitelný bez žádného zvláštního editoru. Díky tomuto principu je i možné tyto soubory snadno generovat pomocí počítačových programů. Příkladem může být získání dat z databáze či jiných datových struktur, jejich konverze do XML, která je velmi snadná, a následovná aplikace XSLT například pro převod do HTML. Nezávislost na platforměProcesory nebo též programy pro provedení vlastní transformace existují pro všechny známé platformy používané na PC nebo na serverech. V mnoha programovacích jazycích jsou dnes již implementovány knihovny pro XSLT. Jednoznačnost a symetričnostZ matematického hlediska XSLT není jednoznačná, ani není symetrickou funkcí. Pro některé procesory však existuje alespoň jeden případ T(x,y) = x, kde x je zdroj a y je vzorec transformace. Neexistuje však případ T(x,y) = y. Cíle XSLTSmyslem XSLT je na základě zdrojového souboru a šablony vygenerovat jiný, třetí dokument nebo obecně soubor. Struktura tohoto výstupu XSLT není definována přímo standardem a je závislá na procesoru XSLT. Nejčastěji se používá výstup do HTML nebo XML, případně prostý textový formát, označovaný též TXT. Dalšími velmi známými výstupy jsou formáty PDF a RTF. Zcela pochopitelně to však mohou být i libovolné jiné soubory nebo formáty dat. Procesory XSLTProcesory XSLT se obvykle nachází jako součást programovacích jazyků nebo jako knihovny, které lze dodatečné získat z internetu. Příkladem jsou knihovny Xalan, Saxon, Apache FOP, přímou implementaci lze nalézt např. v jazycích PHP, Java, C#. Více aktuálních informací na stránkách konzorcia W3C XSL a XSLT. Příklad užití XSLTV následujícím příkladu je reálná ukázka z WWW stránek. Zdrojem dat je diskový soubory XML a transformační soubor, který je též diskový. Výstupem je HTML, přesněji řečeno dle standardu XHTML 1.0 Strict. Jako procesor je užit interní procesor XSLT v PHP5. Pozn. autora: „Bez bližšího vysvětlení principu uvedu příklad reálného využití XSLT na www stránkách. Nerad bych, aby toto někdo vnímal jako skrytou reklamu.“ Ukázka zdrojového souboru (XML)Zdrojový soubor XML (menu.xml): <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE data SYSTEM "./data/menu.dtd"> <?xml-stylesheet type="text/xsl" href="menu.xsl"?> <data> <rootmenu> <menu name="Osobní vozy" ref="./?cat=cars" target="" description=""> <item name="C1" ref="./?cat=car&model=c1" target="" description="" /> <item name="C2" ref="./?cat=car&model=c2" target="" description="" /> <item name="C3" ref="./?cat=car&model=c3" target="" description="" /> <item name="C4" ref="./?cat=car&model=c4" target="" description="" /> <item name="C4 Picasso" ref="./?cat=car&model=c4picasso" target="" description="" /> <item name="Xsara Picasso" ref="./?cat=car&model=xsarapi" target="" description="" /> <item name="Berlingo" ref="./?cat=car&model=berlingo" target="" description="" /> <item name="Leasing" ref="./?cat=leasing" target="" description="" /> <item name="Vozy na prodejně" ref="./?cat=shopcars" target="" description="" /> </menu> <item name="Předváděcí vozy" ref="./?cat=showcars" target="" description="" /> <item name="Autobazar" ref="./?cat=oldcars" target="" description="" /> <menu name="Další informace" ref="./?cat=other" target="" description=""> <item name="Co je to Acroabt Reader?" ref="./?cat=acrobat" target="" description="" /> <item name="Prodej odtahové služby" ref="./?cat=towsale" target="" description="" /> <item name="Akce zimní pnmeu 2006" ref="./redir.php?uri=./info/wpneu2006-2.pdf" target="_blank" description="" /> <item name="Akce a novinky!" ref="./?cat=news" target="" description="" /> </menu> </rootmenu> </data> Ukázka definičního souboru (DTD) - není třeba pro XSLTNásledující soubor není nezbytný, je přiložen pro úplnost (menu.dtd): <!ENTITY lt '<'> <!ENTITY gt '>'> <!ENTITY amp '&'> <!ENTITY apos '''> <!ENTITY quot '"'> <!ENTITY nbsp ' '> <!ENTITY mdash '—'> <!ENTITY ldquo '“'> <!ENTITY rdquo '”'> <!ENTITY % DataContent "(rootmenu)"> <!ENTITY % MenuContent "(menu | item)*"> <!ENTITY % DataAttrs "ref CDATA #REQUIRED name CDATA #REQUIRED target CDATA '' target2 CDATA #IMPLIED description CDATA #REQUIRED" > <!ELEMENT data %DataContent;> <!ELEMENT rootmenu %MenuContent;> <!ELEMENT menu %MenuContent;> <!ELEMENT item EMPTY> <!ATTLIST data > <!ATTLIST rootmenu> <!ATTLIST menu %DataAttrs; > <!ATTLIST item %DataAttrs; > Ukázka transformačního souboru (XSL)Transformace v jazyce XSL, soubor XML (menu.xsl): <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:apply-templates select="*" /> </xsl:template> <xsl:template match="rootmenu"> <xsl:call-template name="menu" /> </xsl:template> <xsl:template match="rootmenu | menu" name="menu" mode="root"> <xsl:for-each select="*"> <li> <xsl:if test="position()=last()"> <xsl:attribute name="class">last</xsl:attribute> </xsl:if> <a> <xsl:attribute name="href"> <xsl:value-of select="@ref" /> </xsl:attribute> <xsl:if test="not(@target='')"> <xsl:attribute name="onclick">window.open(this.href,'<xsl:value-of select="@target" />');return(false);</xsl:attribute> </xsl:if> <xsl:value-of select="@name" /> </a> <xsl:if test="name(.)='menu'"> <ul> <xsl:call-template name="menu" /> </ul> </xsl:if> </li> </xsl:for-each> </xsl:template> </xsl:stylesheet> Ukázka aplikace XSLT v jazyce PHPVlastní transformační proces v jazyce PHP (index.php): <?php header('Content-Type: text/html; charset=utf-8'); echo("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r"); echo("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\r"); ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs" dir="ltr"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-language" content="cs" /> <meta http-equiv="content-style-type" content="text/css" /> <title id="Header_Title">ABC</title> <link rel="StyleSheet" href="./menu.css" type="text/css" media="all" /> </head> <body> <div id="global"> <h1>Napis</h1> <?php echo(" <div id=\"menu-div\">\r"); $xmldom = new DomDocument(); $xmldom->load("./menu.xml"); $xmldom->validate(); $xsldom = new DomDocument(); $xsldom->load("./menu.xsl"); $xsltproc = new XsltProcessor(); $xsldom = $xsltproc->importStylesheet($xsldom); $outdom = $xsltproc->transformToDoc($xmldom); echo(" <ul id=\"myTree\">\r"); print $outdom->saveHTML(); echo(" </ul>\r"); echo(" </div>\r"); ?> </div> </body> </html> Ukázka výstupuVýstup zmíněné transormace - v tomto případě data ve formátu HTML: <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs" dir="ltr"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-language" content="cs" /> <meta http-equiv="content-style-type" content="text/css" /> <title id="Header_Title">ABC</title> <link rel="StyleSheet" href="./menu.css" type="text/css" media="all" /> </head> <body> <div id="global"> <h1>Nadpis</h1> <div id="menu-div"> <ul id="myTree"> <li><a href="./?cat=cars">Osobní vozy</a> <ul> <li><a href="./?cat=car&model=c1">C1</a></li> <li><a href="./?cat=car&model=c2">C2</a></li> <li><a href="./?cat=car&model=c3">C3</a></li> <li><a href="./?cat=car&model=c4">C4</a></li> <li><a href="./?cat=car&model=c4picasso">C4 Picasso</a></li> <li><a href="./?cat=car&model=xsarapi">Xsara Picasso</a></li> <li><a href="./?cat=car&model=berlingo">Berlingo</a></li> <li><a href="./?cat=leasing">Leasing</a></li> <li class="last"><a href="./?cat=shopcars">Vozy na prodejně</a></li> </ul> </li> <li><a href="./?cat=showcars">Předváděcí vozy</a></li> <li><a href="./?cat=oldcars">Autobazar</a></li> <li class="last"><a href="./?cat=other">Další informace</a> <ul> <li><a href="./?cat=acrobat">Co je to Acroabt Reader?</a></li> <li><a href="./?cat=towsale">Prodej odtahové služby</a></li> <li><a href="./redir.php?uri=./info/wpneu2006-2.pdf" onclick="window.open(this.href,'_blank');return(false);" >Akce zimní pnmeu 2006</a></li> <li class="last"><a href="./?cat=news">Akce a novinky!</a></li> </ul> </li> </ul> </div> </div> </body> </html> Odkazy a literaturaOdkazy ve Wikipedii
Externí odkazy
Literatura
|
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net