PHP: šablónovacích systém XSLT (1) - jednoduché čítanie RSS
V predchádzajúcej lekcii, Práca so súbormi XML v PHP , sme sa zoznámili s prácou so súbormi vo formáte XML. Prebrali sme použitie tried XMLWriter, XMLReader a SimpleXML.
Väčšina začiatočníkov začne používať PHP tak, že najprv vytvorí stránku v HTML a do nej začne vkladať kusy kódu v PHP. Asi takto:
<html> <head> <title><?php echo $titulek; ?></title> </head> <body> <h1><?php echo $titulek; ?></h1> <ul> <?php foreach($seznam as $polozka){ echo "<li>",htmlspecialchars($polozka),"</li>\n"; } ?> </ul> </body> </html>
Príklad je veľmi zjednodušený, nie je v ňom uvedené naplnenie hodnôt
premennej $titulek
a polia $seznam
.
V tejto podobe bolo vytvorených mnoho funkčných webov. Výhodou je
jednoduchosť, jazyk PHP bol pôvodne určený na presne takéto použitie.
Vkladanie opakujúcich sa blokov bolo vyriešené funkciami
include()
a require()
.
S rastúcou komplexnosťou stránky a množstvom podstránok sa však táto jednoduchosť stráca. Autor dizajnu stránky už často nie je schopný zodpovedne volať potrebné premenné, najmä ak je potrebné vyberať dáta z databázy. Vývojári volali po oddelení aplikácie od dát.
Vzniklo mnoho lepších či horších šablónovacích systémov, ktoré dokážu čítať externý súbor, doplniť doň potrebnej reťazca a vypísať na výstup. Medzi také patrí napríklad Smarty. V PHP dáta uložíte do špeciálneho poľa, zavoláte Smarty a dáta sa uložia na správne miesto. Nevýhodou je, že sa musíte naučiť ďalší jazyk. Vlastne používate šablónovacích jazyk napísaný v šablonovacím jazyku.
Písal som, že dáta pre šablónovacích systém je nutné vopred uložiť do nejakého poľa. Všeobecne to ani nemusí byť polia, ale nejaká dobre známa dátová štrukúry. Môže to byť CSV, JSON, XML, DOM alebo čokoľvek iné, čomu šablónovacích systém rozumie.
Medzi inými vznikol aj veľmi komplexný šablónovacích systém XSLT. Vývojári si ho veľmi neobľúbili, pretože nie je úplne jednoduché sa ho naučiť. Tiež preto, že je dosť "ukecaný". Je to dané tým, že šablóny sa píšu v jazyku XML. Vstupné dáta sú tiež vo formáte XML. Zlúčením šablóny a dát (transformáciou) vznikne nový súbor teoreticky ľubovoľného typu, v našom prípade HTML.
Pre jednoduchú ukážku som si vybral súbor RSS z webu itnetwork. Tento súbor chcem previesť do nejakého líbivějšího formátu a zobraziť v prehliadači. Využijem skutočnosti, že RSS používa formát XML a použijem šablónu XSLT.
itnetwork.xsl
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'> <xsl:output method="html" encoding="utf-8" indent="yes"/> <xsl:template match="/rss/channel"> <html> <head> <meta http-equiv="refresh" content="300"/> <title><xsl:value-of select="title"/></title> </head> <body> <h1><xsl:value-of select="title"/></h1> <ul> <xsl:for-each select="item"> <li> <xsl:element name="a"> <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute> <xsl:attribute name="target">_blank</xsl:attribute> <xsl:value-of select="title"/> </xsl:element> <p><xsl:value-of select="description"/></p> </li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet>
Všetky príkazy pre XSLT začínajú <xsl: ... Deklarácia na začiatku sú nutné k definícii výstupu transformácie.
V tejto podobe to však ešte nejde použiť. Prečo? Pretože šablónu síce máme, ale nemáme dáta. Tiež nemáme virtuálny stroj, ktorý by dáta spojil so šablónou. Vlastne máme. Je súčasťou PHP na väčšine serverov. Stačí ho len spustiť:
<?php $doc = new DOMDocument(); $xsl = new XSLTProcessor(); $doc->load('itnetwork.xsl'); $xsl->importStyleSheet($doc); $doc->load('http://www.itnetwork.cz/rss_generator_all.php'); echo "<!DOCTYPE html>",$xsl->transformToXML($doc);
To je všetko. Šablónu itnetwork.xsl
a skript umiestnite na
svojom obľúbenom webhostingu a môžete si začať užívať prezeranie RSS
kanálu s päťminútovú periódou. Ak vás nejaký príspevok zaujme, stačí
kliknúť.
Uvedená šablóna je veľmi primitívne, je napísaná procedurálne a vôbec nevyužíva najsilnejších stránok XSLT. O tom však až nabudúce.
V ďalšej lekcii, Práca s archívmi ZIP v PHP , sa zoznámime s prácou s archívmi vo formáte
ZIP v PHP. Ukážeme si triedu ZipArchive
a jej najdôležitejšie
metódy.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 2x (1.85 kB)
Aplikácia je vrátane zdrojových kódov v jazyku PHP