Administrateur PHPfrance |
3088 Messages
16 mars 2008, 20:28
Ça ne marche pas
Je ne suis pas sûr de comprendre, chez moi ça marche donc on doit avoir des objectifs différents.
<?php
$xml = new DOMDocument;
$xml->loadXML('<?xml version="1.0" encoding="utf-8"?><programlisting role="php">
<?php
$var = array();
?>
</programlisting>');
$xsl = new DOMDocument;
$xsl->loadXML('<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8" />
<xsl:template match="programlisting">
<xsl:variable name="pl">
<xsl:apply-templates />
</xsl:variable>
<xsl:variable name="role" select="@role" />
<xsl:text><?php
include_once \'/usr/share/xml/docbook/php/geshi.php\';
$source = \'</xsl:text><xsl:value-of select="$pl" /><xsl:text>\';
$language = \'</xsl:text><xsl:value-of select="$role" /><xsl:text>\';
$geshi = new GeSHi(trim($source), $language);
echo $geshi->parse_code();
?></xsl:text>
</xsl:template>
</xsl:stylesheet>');
$xslt = new XSLTProcessor;
$xslt->importStylesheet($xsl);
echo $xslt->transformToXML($xml);
...génère bien
<?php
include_once '/usr/share/xml/docbook/php/geshi.php';
$source = '
<?php
$var = array();
?>
';
$language = 'php';
$geshi = new GeSHi(trim($source), $language);
echo $geshi->parse_code();
?>
les PIs n'exécutent pas le code directement [...] Le résultat s'affichera sans s'exécuter.
De quel code parles-tu ? Effectivement, XSLT n'
exécute aucune sorte de code. Une fois la transformation effectuée, libre à toi d'interpréter le résultat, par exemple avec eval() si nécessaire.