2009-09-25 4 views
2

Возможно ли использование PHP в документе XSL?Использование PHP в XSL

Всегда, когда я пытаюсь это сделать, я получаю ошибки ... так, прежде чем волноваться, я хотел бы знать, возможно ли это. (Я абсолютный новичок)

У меня есть файл XSL, как это один

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE xsl:stylesheet [ 
<!ENTITY nbsp "&#160;"> 
]> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
<html> 
<head> 
    <title></title> 

    <style type="text/css"> 
    [...] 
    </style> 

</head> 
<body> 

[...] 

    <div id="content"> 
    <?php echo $anything; ?> 
    </div> 

[...] 

</body> 
</html> 
</xsl:template> 

</xsl:stylesheet> 

(я вырезал код)

Так я в том числе файл XML с помощью PHP (что XML файл стиль с этим файлом XSL) А теперь я пытался повторить содержание, например, $ что-нибудь

Но это не работает

+0

Пожалуйста, укажите, как вы попробуете его. – erenon

+0

Какие ошибки? Что вы пытаетесь сделать точно, и почему таким образом над другим? – lod3n

ответ

1

Вы можете использовать его как в XSL апе xml он преобразует.

  • Ваш сервер должен анализировать .xsl/XML-файлы как PHP
  • Ваш PHP должен создать действительный XSL/XML
+0

Как он используется при преобразовании XML? – grantwparks

0

Вы можете использовать SimpleXML манипулировать XML в PHP. http://nl.php.net/simplexml есть ссылка класса simplexml. Поэтому после загрузки XML-файла в PHP и прежде чем повторять его с помощью asXML() - функции, вы можете изменить XML через интерфейс simplexml.

2

Если вы используете класс XSLTProcessor для выполнения XSL, вы можете просто registerPHPFunctions. Я делаю это все время для определенных манипуляций с данными в XSL. Затем я могу вызвать любую функцию или метод PHP, которые я хочу в XSL.

1

Если вы работаете Saxon-EE 9.7 процессор XSLT, то вы можете использовать <xsl:processing-instruction name="php"> как ваш <?php тег с одним причудливой оговоркой: вы должны добавить ? непосредственно перед закрывающим тегом </xsl:processing-instruction>.

<xsl:processing-instruction name="php"> 
    echo "hello world!"; 
?</xsl:processing-instruction> 

Чтобы использовать пример, это будет выглядеть следующим образом:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE xsl:stylesheet [ 
<!ENTITY nbsp "&#160;"> 
]> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
<html> 
<head> 
    <title></title> 

    <style type="text/css"> 
    [...] 
    </style> 

</head> 
<body> 

[...] 

    <div id="content"> 

     <xsl:processing-instruction name="php"> 
      echo $anything; 
     ?</xsl:processing-instruction> 

    </div> 

[...] 

</body> 
</html> 
</xsl:template> 

</xsl:stylesheet> 
Смежные вопросы