Написать письмо   
 
logo
 
Snippy
Сборник
примеров кода
Естественно только для трансформации в PHP :)
Сначала необходимо зарегистрировать одну или несколько функций для возможности использования из XSLT:
В корневом элементе XSL документа указываем namespace для PHP
Ну и собственно вызываем зарегистрированную функцию:


Александр [Добавлено 16.01.2012 20:30:35]
Добрый день ... Ищу решение сходной проблемы:
Есть PHP:
<?php

header("Content-type: text/html; charset=utf-8");

$xmlDoc='index.xml';
$xslDoc='index.xsl';



$xml=new DOMDocument;
$xml->load($xmlDoc);
$xsl=new DOMDocument;
$xsl->load($xslDoc);
$proc=new XSLTProcessor;
$proc->registerPHPFunctions();
$proc->importStylesheet($xsl);

echo $proc->transformToXml($xml);
echo '<br>опаньки!!!';

class testClass{
function testClassFoo(){
$arr=array('test1','test2','test3','test4');
echo '<ul>';
foreach ($arr as $key=>$val){
echo '<li>'.$val.'</li>';
}
echo '</ul>';
}
}

function test() {
$test=new testClass;
$test->testClassFoo();
}

function test1() {
echo 'Test1<br>';
}

?>

Есть XSL:
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:php="http://php.net/xsl"
exclude-result-prefixes="php">
<xsl:output method="html"/>

<xsl:template match="/">
<html>
<head>
<title><xsl:value-of select="string(/page/title[1])"/></title>
</head>
<body>
<xsl:value-of select="php:function('test1')"/>
<xsl:call-template name="test"/>
</body>
</html>
</xsl:template>
<xsl:template name="test">
<xsl:value-of select="php:function('test')"/>
</xsl:template>

</xsl:stylesheet>

Вопрос::Почему он выводит результат работы PHP-функций в HTML не в том месте где написал в шаблоне, а в самом начале, перед всеми тэгами????



Ваше имя
Ваш E-mail
(если хотите отслеживать комментарии)
Дoкажи, что ты не робот
Текст комментария