Mam następujący problem. Chcę umieścić kod php w arkuszu xsl, ale niestety kod nie jest wykonywany. Być może, że popełniam jakiś podstawowy błąd, np w deklarowaniu output method w XSL, lub w procesie przetwarzania XML'a i XSL przez php. Nie prosiłbym jednak o pomoc bez przetestowaniu kilku opcji, niestety bez rezultatu...
Oto pliki:
XML:
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="main.xsl"?> <document> <headSection></headSection> <bodySection> <!-- TOP START --> <top> <topMenu> <item> <linkTitle>Link 1</linkTitle> <link>?page=link</link> </item> <!-- Tutaj reszta treści --> <!-- FOOTER START --> <footer>Copyright Š 2007 ...</footer> <!-- FOOTER END --> </bodySection> </document>
XSL:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" doctype-public="-//W3C/DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" /> <xsl:template match="document"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <title>Tytuł strony</title> @import url("cSs/main.css"); </style> </head> <body> <div id="container"> <div id="top"> <!-- FRAGMENT GDZIE ZALACZAM KOD php> <div id="main-content"><xsl:processing-instruction name="php">echo 'php';</xsl:processing-instruction></div> </body> </html> </xsl:template> </xsl:stylesheet>
php:
<?php $xml=new DOMDocument; $xml->load('xMl/main.xml'); $xsl=new DOMDocument; $xsl->load('xSl/main.xsl'); $proc=new XSLTProcessor; $proc->importStylesheet($xsl); ?>
Kod xml i xsl odchudzilem w poście. Oczywiście obydwa walidują się poprawnie i przy wykonaniu skryptu otrzymuję poprawną stronę. Niestety w miejścu gdzie jest kod php, w źródle strony linia wygląda tak:
Bede bardzo wdzięczny za odpowiedź. Dodam jeszcze, że nie mogę używać Sablotrona, choć nie wiem czy to zmieniłoby sytuację.
Pozdrawiam.