XSLT-Processor gibt Fehler aus

Grafixboy

Erfahrenes Mitglied
Hallo ich benutze folgendes Script um aus der
XML-Datei mittels der XSL-Datei eine Html zur
Laufzeit genergieren.

PHP:
<?php
function xml2html($xmldata, $xsl)
{
    /* $xmldata -> Ihr XML */
    /* $xsl -> XSLT-Datei */
    

    $path = 'include';
    $arguments = array('/_xml' => $xmldata);
    $xsltproc = xslt_create();
    xslt_set_encoding($xsltproc, 'ISO-8859-1');
    $html = xslt_process($xsltproc, 'arg:/_xml', "$path/$xsl", NULL, $arguments);  /*<<= Zeile 12*/
 
    if (empty($html)) {
       die('XSLT processing error: '. xslt_error($xsltproc));
    }
    xslt_free($xsltproc);
    return $html;
}
$xmldata ="menue2.xml";
$xsl ="menue2.xsl";
echo "$xmldata und $xsl wird html";
xml2html($xmldata, $xsl);
?>

Dabei bekomme ich folgenden Fehler ausgewurfen:
Code:
Warning: Sablotron error on line 1: XML parser error 2: syntax error in /home/web207/user/ftproot/www.domain.de/XMLvsXSL - Kopie/xml2html.php on line 12
XSLT processing error: XML parser error 2: syntax error
wenn ich den Fehler richtig deute sagt er mir:
das die 'sablot.dll' die XML-Datei nicht richtig parsen kann
aufgrund eines Syntaxerrors in xml2html.php in Zeile 12

Gibt es eine Art Fehlertabelle von Sablotron?

Der Dienst scheint ja verfügbar zu sein bei meinem Provider:

xsl1.jpg

xsl2.jpg

Wer kann helfen ? :)

Ergänzung:
Vielleicht noch wichtig zu wissen das die Dokumente lokal aufgerufen funktionieren.

kann es vielleicht zu Problemen kommen wenn ich in der XSL noch eine CSS aufruf benutze ?
glaube ich aber nicht

oder findet ereinfach die XSL Datei nicht ?

oder ganz anders muss ich wenn ich es mit php parse den eintrag in der xml weglassen ?
Code:
<?xml-stylesheet type="text/xsl" href="menue2.xsl"?><!--Zeile 2 -->
 
Zuletzt bearbeitet:
Hi.

Was auffällt: dein Stylesheet ist mit UTF-8 kodiert, du gibst allerdings ISO-8859-1 als Zeichensatz an.

Wie hast du es denn lokal ausprobiert? Auch mit Sablotron/PHP?

Gruß
 
Nein nicht über XAMP oder ähnliches eben einfach die xml im Browser aufgerufem
und die Validierung der Dateien mit dem Web Developer getestet.

Danke für deine Mühe doch daran lag es scheinbar nicht.
 
Zuletzt bearbeitet:
Moin,

Code:
arg:/_xml

Hab mal kurz nachgeschaut, aber dies Argument enthält ja bei dir nicht einen String mit XML als Inhalt, sondern lediglich den Pfad(welcher natürlich einen XML-Parserfehler produziert).

Ich glaube, in dem Fall müsste das Argument so aussehen:
Code:
"$path/$xmldata"
 
Ja
Danke so parst er immerhin ein wenig weiter.
Er hat sich irgendwie an den einfachen hochkommas gestört.

Code:
Warning: Sablotron error on line 94: attribute 'id' created after a child has been added in /home/web207/user/ftproot/www.domain.de/XMLvsXSL - Kopie/xml2html.php on line 13
XSLT processing error: attribute 'id' created after a child has been added

Ergänzung:
Den Fehler bringt er mir bei der vor-vor-vorletzten Zeile der xml Datei

Code:
...
	<hm type="hmp">
	<bname>Kontakt</bname>
	<colo>0xFF0000</colo>
	<end>txt</end>
	<bg>kontakt.jpg</bg>
		<um type="ump">
			<bname>Kont.-Formular</bname>
			<end>swf</end>
			<bg>kontakt.jpg</bg><!--Zeile 94-->
		</um>
	</hm>
</menue>
 
Zuletzt bearbeitet:
Ja
Danke so parst er immerhin ein wenig weiter.
Er hat sich irgendwie an den einfachen hochkommas gestört.

Code:
Warning: Sablotron error on line 94: attribute 'id' created after a child has been added in /home/web207/user/ftproot/www.domain.de/XMLvsXSL - Kopie/xml2html.php on line 13
XSLT processing error: attribute 'id' created after a child has been added
Der Fehler bedeutet, das du versuchst ein XML Attribut zu einem Element hinzuzufügen, nachdem du bereits ein Kind-XML-Element eingefügt hast.

Also, nicht so:
XML:
<div>
  <xsl:element name="..." />
  <xsl:attribute name="..." />
</div>
sondern so:
XML:
<div>
  <xsl:attribute name="..." />
  <xsl:element name="..." />
</div>
Gruß

PS: Wobei die Transformation bei mir (PHP 4.4.9, Sablotron 1.0.3) problemlos funktioniert.
 
Zuletzt bearbeitet von einem Moderator:
ich nutze aber PHP Version 4.4.4-8+etch6
also eine Sub - Version vorher ;) aber ich teste es gleich mal

Resultat: ?:(
jetzt bringt er weder Fehler noch ein Resultat
 
Zuletzt bearbeitet:
Zurück