Via de search kwam ik alleen een oud topic van mezelf tegen, zonder antwoord, dus hier mijn vraag.
Ik wil graag via php een bestand inlezen, met eraan vast een query-string om die vervolgens in het aangevraagd bestand te verwerken. Dit alles om een XSL-stylesheet, serverside te kunnen gebruiken.
Bovenstaand is eigenlijk de bedoeling. Maar aangezien DomDocument::load() de querystring niet wil accepteren (file not found geeft ie dan), moet ik eerst maar het XSL bestand in zien te lezen met query string. Daarvoor heb ik deze functie "gemaakt":
Werkt prima, zolang ik het maar aanroep met een absoluut adres incl domein. Dat wil ik niet, ik wil het domeinonafhankelijk houden dus ipv nu fReadFile('http://www.mijndomein.nl/xsl/default.xsl?sNodeId=test'); zou ik graag fReadFile('/xsl/default.xsl?sNodeId=test'); gebruiken.. of helemaal mooi.. DomDocument::load('/xsl/default.xsl?sNodeId=test');
Volgens mij, weet ik niet zeker, is ook het nadeel dat het script nu de file om in te lezen als een extern bestand ziet en die in gaat lezen van het externe adres http://www.mijndomein.nl/ . Dat kost dus alleen maar onnodig tijd en resource..
Heeft iemand een mooiere oplossing voor dit probleem? Lijkt me dat ik niet de enige ben die hier tegenaan loop.
Ik wil graag via php een bestand inlezen, met eraan vast een query-string om die vervolgens in het aangevraagd bestand te verwerken. Dit alles om een XSL-stylesheet, serverside te kunnen gebruiken.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| function xmlTransform($buffer) { $xml = new DomDocument('1.0','utf-8'); $xml->loadXML($buffer); $xsl = new DomDocument('1.0','utf-8'); $xsl->load('/xsl/default.php?sNodeId='.$_GET['sNodeId'])); $proc = new XSLTProcessor(); $proc->importStyleSheet($xsl); return $proc->transformToXML($xml); } |
Bovenstaand is eigenlijk de bedoeling. Maar aangezien DomDocument::load() de querystring niet wil accepteren (file not found geeft ie dan), moet ik eerst maar het XSL bestand in zien te lezen met query string. Daarvoor heb ik deze functie "gemaakt":
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| function fReadFile($sUrl) { $hUrl = fopen($sUrl, 'r'); $sReturn = ""; $sReturn .= fread($hUrl, 8192); do { $sReadData = fread($hUrl, 8192); $sReturn .= $sReadData; } while(strlen($sReadData) > 0); fclose ($hUrl); return $sReturn; } |
Werkt prima, zolang ik het maar aanroep met een absoluut adres incl domein. Dat wil ik niet, ik wil het domeinonafhankelijk houden dus ipv nu fReadFile('http://www.mijndomein.nl/xsl/default.xsl?sNodeId=test'); zou ik graag fReadFile('/xsl/default.xsl?sNodeId=test'); gebruiken.. of helemaal mooi.. DomDocument::load('/xsl/default.xsl?sNodeId=test');
Volgens mij, weet ik niet zeker, is ook het nadeel dat het script nu de file om in te lezen als een extern bestand ziet en die in gaat lezen van het externe adres http://www.mijndomein.nl/ . Dat kost dus alleen maar onnodig tijd en resource..
Heeft iemand een mooiere oplossing voor dit probleem? Lijkt me dat ik niet de enige ben die hier tegenaan loop.