Я хочу использовать комбинацию xml & xslt в качестве системы шаблонов. Вопрос, на который я хочу ответить, может: xslt и PHP взаимодействуют друг с другом (т.е. переменные общего доступа)?
Основная задача, которую вы можете сделать с PHP, – определить, какой XML-файл должен преобразовать, с каким XSLT-скриптом. Используя это, вы можете
а) передать параметры с PHP на XSLT и
б) использовать функции PHP в скрипте XSLT.
В этом примере показан первый PHP-файл:
<?php function f($value){ //do something return $value; } $proc=new XsltProcessor; $proc->registerPHPFunctions(); $proc->setParameter('', 'p', '123'); $proc->importStylesheet(DOMDocument::load("script.xsl")); echo $proc->transformToXML(DOMDocument::load("data.xml")); ?>
второй файл XSLT:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" exclude-result-prefixes="php"> <xsl:param name="p" select="''"/> <xsl:template match="/"> <xsl:value-of select="$p"/> <xsl:value-of select="php:function('f', '456')"/> </xsl:template> </xsl:stylesheet>
Выходной сигнал должен быть 123456
EDITED: select = "''" вместо select = ""
XSLT – это язык, а не часть программного обеспечения. Все зависит от того, какое программное обеспечение вы используете для обработки XSLT: если это расширение PHP, работающее как часть вашего существующего PHP-приложения, то да. В противном случае нет.
Что именно вы подразумеваете под «переменными доли»? Вы хотите, чтобы PHP-скрипт сначала генерировал XSLT и использовал этот вывод в другом скрипте PHP для визуализации ваших XML-данных? Если так, то да, это возможно. Не имеет значения, откуда исходит XSLT.