Technologii Data Islands (datových ostrůvků) bohužel nepodporují alternativní prohlížeče (např. Netscape a Opera). Tyto prohlížeče chovají poněkud vlažný vztah k celé XML technologii a proto je potřeba XML data zpracovávat dynamicky (na straně serveru) tak, aby byl prohlížečům vracen pouze čistý HTML kód.

Technické (programovací) provedení této myšlenky není nijak náročné. Základní rovnice zní: XML + XSL = HTML. To znamená, že na serveru musíte XML data naformátovat pomocí XSL šablony. Díky tomu odešlete klientům čistý HTML kód, se kterým si umí snadno poradit všechny prohlížeče.
Nejdříve si vyrobte XML soubor (např. výpis článků):

<?xml version=“1.0″ encoding=“Windows-1250″?>
   <vypis>
      <clanek>
         <nadpis>Uživatelé a přístupová práva v MySQL</nadpis>
         <link>http://www.interval.cz/r-article.asp?id=857</link>
      </clanek>

      <clanek>
         <nadpis>SQL – vkládání a aktualizace dat v tabulce</nadpis>
         <link>http://www.interval.cz/r-article.asp?id=330</link>
      </clanek>
</vypis>

Soubor uložte například jako int_artlist.xml.
Teď potřebujete XSL šablonu pro formátování XML dat:

<?xml version=“1.0″ encoding=“Windows-1250″?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
   <xsl:template match="/">
   <html>
   <body>
   <xsl:for-each select="vypis/clanek"> // smyčka – projde celým XML souborem
      <a> //tag <a> – začátek linku
      <xsl:attribute name="href"> // tagu <a> přiřadíte atribut href…
         <xsl:value-of select="link" /> // … a ten potom získá XML hodnotu link
      </xsl:attribute> // ukončíte
      <xsl:value-of select="nadpis" /> // vypíšete nadpis článku
      </a> // ukončíte link
      <br /> // odřádkujete
   </xsl:for-each> // nezapomeňte ukončit smyčku
   </body>
   </html>
</xsl:template>
</xsl:stylesheet>

Soubor můžete pojmenovat int_style.xsl.
Nakonec vytvoříte jednoduchou ASP stránku, která se postará o vyzvednutí obou souborů ze serveru a naformátování XML dat pomocí XSL šablony:

<%
SET xmlSoubor = Server.CreateObject(„Microsoft.XMLDOM“)
SET xslSoubor = Server.CreateObject(„Microsoft.XMLDOM“)
xmlSoubor.load(Server.MapPath(„int_artlist.xml“))
xslSoubor.load(Server.MapPath(„int_style.xsl“))
response.write(xmlSoubor.transformNode(xslSoubor))
SET xslSoubor = Nothing
SET xmlSoubor = Nothing
%>

Uložte například jako listart.asp a zkontrolujte výsledek.
Kompletní zdroj příkladu si můžete stáhnout zde.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět