Hoi, voor een eindopdracht van mijn studie moet ik xml genereren met php. Ik stuit alleen op een probleem met de xslt:import. Als ik mijn xml-bestand en twee xsl-stylesheets parse met
php dan krijg ik de volgende error:
Warning: Sablotron error on line 15: XML parser error 7: mismatched tag in D:\Server\xampp\htdocs\xml\inloggen.php on line 25
XSLT processing error: XML parser error 7: mismatched tag
Mijn code ziet er als volgt uit:
Het probleem doet zich voor sinds ik de xsl:import gebruik. Dus op een of andere manier gaat het importeren van de header.xsl niet goed. Als ik de xml en xsl bestanden controleer met xsltproc dan gaat alles goed en komt er geen foutmelding.
Weet iemand hoe ik dit op kan lossen, want ik kom er niet meer uit.
Verder maak ik gebruik van PHP versie 4.4.4
php dan krijg ik de volgende error:
Warning: Sablotron error on line 15: XML parser error 7: mismatched tag in D:\Server\xampp\htdocs\xml\inloggen.php on line 25
XSLT processing error: XML parser error 7: mismatched tag
Mijn code ziet er als volgt uit:
XML: inloggen.xsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| for (i = 0; i < 4; i++) { <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:import href="header.xsl"/> <xsl:param name="loginID"/> <xsl:param name="password"/> <xsl:template match="STAFF"> <xsl:call-template name="header"/> <xsl:choose> <xsl:when test="EMPLOYEE[@loginID=$loginID]"> <xsl:apply-templates select="EMPLOYEE"/> </xsl:when> <xsl:otherwise> <h1>Welkom bij het vakantie planningssysteem</h1> <font color="#FF0000">LoginID of wachtwoord onjuist</font> ........ </xsl:otherwise> </xsl:choose> </body> </html> </xsl:template> <xsl:template match="EMPLOYEE"> <xsl:if test="@loginID=$loginID"> <xsl:if test="@passw=$password"> <xsl:apply-templates select="NAME"/> </xsl:if> ..... </xsl:template> <xsl:template match="NAME"> <P>Welkom: <xsl:value-of select="."/></P> </xsl:template> </xsl:stylesheet> } |
XML: header.xsl
1
2
3
4
5
6
7
8
9
10
11
12
13
| for (i = 0; i < 4; i++) { <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:template name="header"> <html> <head> <meta http-equiv="Content-Type" value="text/html; charset=utf-8"/> <title>Vakantie Planning Martijn's F1 merchandise</title> </head> <body BGCOLOR="#FFFFCC"> </xsl:template> } |
PHP: inloggen.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| for (i = 0; i < 4; i++) { <?php $sXML = 'personal.xml'; $sXSL = 'inloggen.xsl'; $loginID = $_POST['loginID']; $password = $_POST['passw']; $xslt_params['loginID'] = $loginID; $xslt_params['password'] = $password; $sXHTML = xml2html($sXML, $sXSL, $xslt_params); echo $sXHTML; function xml2html($xmldata, $xsl, $aParameters) { /* $xmldata -> your XML */ /* $xsl -> XSLT file */ $xsltproc = xslt_create(); $filebase = 'file://' . getcwd () . '/'; xslt_set_base($xsltproc, $filebase); xslt_set_encoding($xsltproc, 'ISO-8859-1'); $html = xslt_process($xsltproc, $xmldata, $xsl, NULL, Null, $aParameters); if (empty($html)) { die('XSLT processing error: '. xslt_error($xsltproc)); } xslt_free($xsltproc); return $html; } ?> } |
Het probleem doet zich voor sinds ik de xsl:import gebruik. Dus op een of andere manier gaat het importeren van de header.xsl niet goed. Als ik de xml en xsl bestanden controleer met xsltproc dan gaat alles goed en komt er geen foutmelding.
Weet iemand hoe ik dit op kan lossen, want ik kom er niet meer uit.
Verder maak ik gebruik van PHP versie 4.4.4