[PHP/XML op WinXP/Apache] XSLT processing error

Pagina: 1
Acties:

  • Dr.Bob
  • Registratie: November 1999
  • Laatst online: 14-08 10:48

Dr.Bob

Dr.Bob says: HEAL!

Topicstarter
Beste mensen, ik heb vanuit een tutorialtje (Transform Your PHP with XSLT) een testje gemaakt bestaande uit 3 files:
* docbook.xml
* docbook.xsl
* docbook.php

Dit is de source van de PHP file:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
// Create an XSLT processor
    $xsltproc = xslt_create();

// Perform the transformation
    $html = xslt_process($xsltproc, 'docbook.xml', 'docbook.xsl');

// Detect errors
    if (!$html) die('XSLT processing error: '.xslt_error($xsltproc));

// Destroy the XSLT processor
    xslt_free($xsltproc);

// Output the resulting HTML
    echo $html;
?>

Als ik de pagina open krijg ik als error:
XSLT processing error: cannot open file 'c:/program files/php/docbook.xsl'.

En dat is uiteraard de lokatie waar de php.exe staat. En als ik de XML en de XSL file in die betreffende dir zet gaat het prima, maar waarom kunnen ze niet gewoon in de (virtuele) root folder staan van apache? Moet toch kunnen hè lijkt me, ik zie vast iets over het hoofd, kan iemand een tipje geven?

Mijn config: XP met Apache 1.3.20, PHP 4.1.1 met XSLT support enabled en EXPAT version 1.95.2

Thanx in advance,
Dr.B

NERDCORE FOR LIFE


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
hmmz.. vaag..

probeer eens de nieuwe sablot van www.gingerall.com te installen.

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
Als je zegt dat ie kijkt in de dir van php.exe, lijkt het er voor mij op alsof je php als cgi onder apache hebt draaien.

Als je de phpinfo bekijkt, wat staat er dan bovenaan bij 'Server API'?

  • Dr.Bob
  • Registratie: November 1999
  • Laatst online: 14-08 10:48

Dr.Bob

Dr.Bob says: HEAL!

Topicstarter
Ja, daat staat CGI. Is dat niet goed?

NERDCORE FOR LIFE


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
Nop, dat had ik al verwacht. Als je wil zorgen dat die de document directory van apache pakt, moet je zorgen dat daar 'Apache' komt te staan.

Ik heb hier daar wel een stukje over geschreven. Let wel effe op dat je de hele tekst leest, want er zijn een paar stukken code die nog gewoon in arial staan ;)

  • Dr.Bob
  • Registratie: November 1999
  • Laatst online: 14-08 10:48

Dr.Bob

Dr.Bob says: HEAL!

Topicstarter
Hey freak007, goeie tut man, hij draait zeker sneller nu met SERVER API = APACHE! Thanx.
Maar ... helaas probleem van hierboven blijft, alleen nu geeft ie niet de dir van de php.exe weer, maar de apache root (op mijn systeem 'c:/program files/apache group/apache/').

En het stomme is, ik roep de file docbook.php dus aan in een virtuele server t.w. http://test.bob/xml/docbook.php en die virtuele server wijst naar de dir d:\www\test, daar gaan alle andere php files prima, dus de config van de virtual server klopt volgens mij wel.
Nog een suggestie maybe?

NERDCORE FOR LIFE


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
Ik weet dat als ik direct in php een bestand open met file() dat het dan wel in dezelfde dir kan staan als waar de request op wordt uitgevoerd.

Blijkbaar ligt het dus aan de manier waarop sabletron de bestanden opent. Je zou het kunnen oplossen door zelf de bestanden te openen en ze daarna als string meegeven aan sabletron.

Ik gebruik zelf altijd het volgende stukje code om mee te parsen
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
<?
echo XSLTransform(
            implode('', file($_REQUEST['xml'] . '.xml')), 
            implode('', file($_REQUEST['xsl'] . '.xsl')));


function XSLTransform($xml, $xsl) {
    // Process the document, returning the result into the $result variable
    // $xml and $xsl contain the XML and XSL data
    $arguments = array(
         '/_xml' => $xml,
         '/_xsl' => $xsl
    );
    
    // Allocate a new XSLT processor
    $xh = xslt_create();
    
    // Process the document
    $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
    
    // Free the XSLT processor
    xslt_free($xh);
    
    return $result;
}
?>

De naam van de bestanden haalt ie nu uit $_REQUEST['xml'] en $_REQUEST['xsl'], maar die zou je natuurlijk ook zelf hard-coded in kunnen stellen ;)

Verwijderd

Op maandag 28 januari 2002 18:41 schreef freak007 het volgende:
[zwaar off-topic]
Je sig is stuk
[/zwaar off-topic]

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:41
Op maandag 28 januari 2002 19:33 schreef CoDeR het volgende:
[zwaar off-topic]
Je sig is stuk
[/zwaar off-topic]
Dat is het Mbravenboer valid-xml icoon :D

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
CoDeR: Je sig is stuk
Haha, dat die nog steeds rond zwerft :+ . Ik zal hem er wel weer even op zetten. Heb net m'n webspace schoongeveegd namelijk...

edit: hij staat er weer.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • ikke_
  • Registratie: Juni 1999
  • Laatst online: 15-09 06:46
edit > niet goed gelezen

  • Dr.Bob
  • Registratie: November 1999
  • Laatst online: 14-08 10:48

Dr.Bob

Dr.Bob says: HEAL!

Topicstarter
Thanx Freak007, hij doet 't! Gaat nog niet helemaal goed hoe ie zelf de namen uit de $_REQUEST zou moeten halen, maar met hard coden gaat 't prima!

NERDCORE FOR LIFE


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
Op maandag 28 januari 2002 19:39 schreef mbravenboer het volgende:
...
edit: hij staat er weer.
Dat hosten van plaatjes op jouw server bevalt me eigenlijk wel :+ ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
freak007: Dat hosten van plaatjes op jouw server bevalt me eigenlijk wel :+ ;)
Hum, misschien moet ik eens een topic openen in /14 hoe je dat kan voorkomen :P ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1