XSL transfomace XML pomocí MS XMLDOM v ASP
V tomto článku si ukážeme, jak snadno začlenit do naší aplikace data, která máme na serveru uložená v souboru formátu XML. Pomocí šablony XSLT provedeme tranformaci a data budou v aplikaci formátovaná přesně jak potřebujeme.
Pro transformaci využijeme metod MS XMLDOM, pro popis XML a XSL zájemce odkazuji na Slabikář XML. Prohlédněte si ukázku (zdrojový kód).
Nejdříve si vytvoříme 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://interval.cz/clanek.asp?article=857</link>
</clanek>
…
<clanek>
<nadpis>SQL – vkládání a aktualizace dat v tabulce</nadpis>
<link>http://interval.cz/clanek.asp?article=330</link>
</clanek>
</vypis>
Dále potřebujeme XSLT šablonu pro formátování XML dat, může vypadat například takto:
<?xml version=“1.0″ encoding=“Windows-1250″?>
<xsl:stylesheet version=“1.0″ xmlns:xsl=“http://www.w3.org/1999/XSL/Transform“>
<xsl:output method=“xml“ omit-xml-declaration=“yes“ indent=“yes“ encoding=“Windows-1250″ />
<xsl:template match=“/“>
<xsl:for-each select=“vypis/clanek“>
<a>
<xsl:attribute name=“href“><xsl:value-of select=“link“ /></xsl:attribute>
<xsl:value-of select=“nadpis“ />
</a>
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Nyní vytvoříme příklad ASP stránky, do které budeme includovat soubor s funkcí (popíši dále), zajišťující vlastní tranformaci:
<!– #include file=“XMLXSL.inc.asp“ –><?xml version=“1.0″ encoding=“windows-1250″ ?>
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Transitional//EN“ „http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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=windows-1250″ />
<title>XML transformace Demo</title>
</head>
<body>
<div style=“margin:6px;padding:6px;background-color:Beige;width:300px“>
<% getXML „Articles.xml“,“Articles.xslt“ %>
</div>
</body>
</html>
Vidíme, že stránka obsahuje include souboru s procedurou getXML, která je následně použita v serverovém kódu vnořeném do divu. Výsledkem zpracování této procedury je pouze výstup HTML kódu, proto ve své aplikaci můžete samozřejmě použít uvedenou proceduru libovolněkrát chcete a vůbec ji třeba ani do žádného kontaineru nevnořovat.
Nyní se konečně dostáváme k vlastnímu provedení transformace – popíšeme si obsah souboru s procedurou, pojmenovaného XMLXSL.inc.asp:
<script language=“VBScript“ runat=“server“>
Sub getXML(ByVal xmlFile, ByVal xslFile)
Dim sourceXML, sourceXSLT // deklarace objektů
Set sourceXML = Server.CreateObject(„Microsoft.XMLDOM“) // nastavit sourceXML jako nový objekt XMLDOM
Set sourceXSLT = Server.CreateObject(„Microsoft.XMLDOM“) // nastavit sourceXSLT jako nový objekt XMLDOM
sourceXML.load(Server.MapPath(xmlFile)) // naplnit sourceXML naším XML souborem
sourceXSLT.load(Server.MapPath(xslFile)) // naplnit sourceXSLT naším XSLT souborem
sourceXML.transformNodeToObject sourceXSLT, Response // provést transformaci a výsledek předat objektu Response
Set sourceXML = Nothing // uklidit po sobě
Set sourceXSLT = Nothing // uklidit po sobě :)
End Sub
</script>
Procedura si založí dva nové objekty XMLDOM. Jakmile jsou objekty k dispozici, můžeme na nich provádět různé metody – pomocí load je naplníme XML souborem a souborem šablony XSLT. Dále uplatníme metodu transformNodeToObject, která provede vlastní tranformaci a výsledek předá v našem případě objektu Response. Mohli bychom použít i metodu transformNode, jejímž výsledkem je text (řetězec) a tento pak předat jako parametr metodě Write objektu Response – při tomto použití však dle informací Microsoftu může dojít k problémům s konverzí neobvyklých znaků.
Ve finální aplikaci by se patřilo ještě ošetřit možné chybové stavy, které mohou vzniknout například chybějícím nebo nepřístupným souborem XML nebo souborem šablony XSLT, ale také jejich chybnou syntaxí. Oproti ASP.NET zde nemáme žádný další komfort například v podobě cachování, proto je tento způsob vhodný opravdu jen tam, kde z nějakého důvodu ASP.NET nemůžeme použít (pokud je například projekt příliš rozsáhlý, než aby bylo možné stávající ASP stránky jednoduše upravit na ASP.NET, nebo využívá práci sessions, které neumožňují koexistenci ASP i ASP.NET stránek v rámci jedné aplikace).
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Proč investovat do nejvýkonnějších VPS s AMD EPYC procesory
14. června 2024 -
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Optimalizace a zlepšení výkonu kódu: tipy a triky
14. srpna 2023 -
Proč je důležité tvořit obsah na váš web?
29. srpna 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024