IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

 

Predchádzajúci článok
Práca so súbormi XML v PHP
Všetky články v sekcii
Práca so súbormi v PHP
Preskočiť článok
(neodporúčame)
Práca s archívmi ZIP v PHP
Článok pre vás napísal Kit
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Jsem spokojeným uživatelem operačních systémů založených na linuxovém jádře. Zejména openSUSE a Ubuntu. Pro psaní veškerých textů a programů používám vynikající textový editor Vim. Aplikace se snažím psát vždy v tom nejvhodnějším programovacím jazyk...
Aktivity