oto plik sklep.xml
[xml:1:221e2be0c5]
<?xml version="1.0" encoding="iso-8859-2"?>
<?xml-stylesheet type="text/xsl" href="templates.xsl"?>
<Sklep>
<produkt>
<nazwa>Nazwa 1</nazwa>
<producent>producent 1</producent>
<indeks>1</indeks>
<cena>5,0</cena>
</produkt>
<produkt>
<nazwa>Nazwa 2</nazwa>
<producent>producent 1</producent>
<indeks>2</indeks>
<cena>5,99</cena>
</produkt>
<produkt>
<nazwa>Nazwa 3</nazwa>
<producent>producent 2</producent>
<indeks>3</indeks>
<cena>15,0</cena>
</produkt>
</Sklep>
[/xml:1:221e2be0c5]
oto plik templates.xsl
[xml:1:221e2be0c5]
<?xml version="1.0" encoding="iso-8859-2"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="iso-8859-2"/>
<xsl:template match="Sklep">
<html>
<head>
<title>XML + XSLT -> This page</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#808040" vlink="#000000" alink="#606060">
<table bgcolor="white" border="0" cellpadding="2" cellspacing="2">
<xsl:call-template name="produkt"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template name="produkt">
<xsl:for-each select="produkt">
<tr><td><b>
<xsl:value-of select="nazwa"/>
</b><br/><xsl:value-of select="producent"/>
<br/><font color="pink"><xsl:value-of select="cena"/></font>
<br/><xsl:value-of select="indeks"/>
<br/></td></tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
[/xml:1:221e2be0c5]
oraz kod xslt.php -> odpowiedzialny za transformacje
[php:1:221e2be0c5]<?php
$mainDir = $_SERVER["HTTP_REFERER"];
$xmlFile = $mainDir."sklep.xml";
$xslFile = $mainDir."templates.xsl";
$th = xslt_create() or die("Can't create XSLT handle!");
#$xh = fopen($xmlFile, "r") or die("Can't open XML file");
#$sh = fopen($xslFile, "r") or die("Can't open XSL file");
#$xmlContent = fread($xh, filesize($xmlFile));
#$xslContent = fread($sh, filesize($xslFile));
$XSLtransformation = xslt_process($th,$xslFile, $xmlFile);
echo $XSLtransformation;
xslt_free($th);
if (!$XSLtrensformation) {
die(sprintf("Cannot process XSLT document [%d]: %s",
xslt_errno($th), xslt_error($th)));
}
?>[/php:1:221e2be0c5]
otworzenie pliku xslt.php spowoduje wyswietlenie bledu
Warning: Sablotron error on line 1: XML parser error 4: not well-formed (invalid token) in c:apachehtdocsprojektyxmlxslt.php on line 22
Warning: xslt_errno(): 2 is not a valid XSLT Processor resource in c:apachehtdocsprojektyxmlxslt.php on line 28
Warning: xslt_error(): 2 is not a valid XSLT Processor resource in c:apachehtdocsprojektyxmlxslt.php on line 28
Cannot process XSLT document [0]:
lecz gdy otworze sklep.xml to strona mi sie odczyta. Nie wiem o co chodzi, bo robie to raczej zgodnie z kursami ktore zdolalem znalezc w internecie. Moze w kodzie php jest jakis blad ? ale ja nad XML siedze niezbyt dlugo , i staram sie opanowac to w stopniu podstawowym, zeby wiedziec czym do mnie mowia.
a to kod z phpinfo(); wiec xslt jest zainstalwane.
Kod
xslt
XSLT support enabled
Backend Sablotron
Sablotron Version 1.0
XSLT support enabled
Backend Sablotron
Sablotron Version 1.0
prosze o jakas wskazowke