Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML+XSL] - blad transformacji
Forum PHP.pl > Forum > XML, AJAX > XML
Ace
Witam... Mam problem z tworzeniem strony HTML na podstawie pliku XML i pliku XSL urzywajac do tego php

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  


prosze o jakas wskazowke
Ace
nie rozumiem...
urzylem skryptu
[php:1:f6ed13e70b]<?php

// Allocate a new XSLT processor
$xh = xslt_create();

// Process the document
if ($data = xslt_process($xh, 'sklep.xml', 'templates.xsl')) {
# echo "SUCCESS, sample.xml was transformed by sample.xsl into result.xml";
# echo ", result.xml has the following contentsn<br />n";
# echo "<pre>n";
# print_r($data);
# echo "</pre>n";
echo($data);
} else {
echo "Sorry, sample.xml could not be transformed by sample.xsl into";
echo " result.xml the reason is that " . xslt_error($xh) . " and the ";
echo "error code is " . xslt_errno($xh);
}

xslt_free($xh);

?>[/php:1:f6ed13e70b]

i dziala ... testowalem tylko skrypt na innym serwerze. Co moze byc zle w konfiguracji serwera, jesli z funkcji phpinfo(); wykrywa mi sablotron'a, ale bledy mam. Urzywam win98 + apache 1.3x + php 4.3.4
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.