Перейти к содержимому

Фотография
- - - - -

Помогите разобраться со странным поведением XSLT+PHPFunctions


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
В этой теме нет ответов

#1 bogong

bogong

    Прохожий

    Топикстартер
  • Новичок
  • 0
    1 сообщ.

Отправлено 16 Январь 2012 в 19:55

Есть 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();
}

?>

Есть XML:
<?xml version="1.0" encoding="UTF-8"?>
<page>
   <wrapper name="wrapperMain">
	   <wrapper name="wr1">
		   <modul name="m1"/>
		   <modul name="m2"/>
	   </wrapper>
	   <wrapper name="wr2">
		   <modul name="m3"/>
		   <modul name="m4"/>
	   </wrapper>
	   <wrapper name="wr3">
		   <modul name="m5"/>
	   </wrapper>
   </wrapper>
</page>

Есть XSLT (без функции PHP):
<?xml version="1.0" encoding="UTF-8"?>[/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3]<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  xmlns:php="http://php.net/xsl"
  xmlns:fun='test'
  xsl:extension-element-prefixes="php">
  <xsl:output method="html"/>[/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3]  <xsl:template match="/">
	 <html>
		<head>
		   <title>index.xsl</title>
		</head>
		<body>
		   <xsl:call-template name="test"/>
		</body>
	 </html>
  </xsl:template>
  <xsl:template name="test">
	 <xsl:value-of select="string('Привет!!!')"/>
  </xsl:template>[/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3]</xsl:stylesheet>

Есть XSLT (c функции PHP):
<?xml version="1.0" encoding="UTF-8"?>[/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3]<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  xmlns:php="http://php.net/xsl"
  xmlns:fun='test'
  xsl:extension-element-prefixes="php">
  <xsl:output method="html"/>[/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3]  <xsl:template match="/">
	 <html>
		<head>
		   <title>index.xsl</title>
		</head>
		<body>
		   <xsl:call-template name="test"/>
		</body>
	 </html>
  </xsl:template>
  <xsl:template name="test">
	 <xsl:value-of select="php:function('test')"/>
  </xsl:template>[/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3]</xsl:stylesheet>

Вопрос: почему когда я вывожу данные из функции он их вставляет в самое начало документа, перед всеми тэгами??? А когда вывожу без функций - все в порядке ... Как сделать так чтоб из функции выводилось на том месте где нужно??? Что не так??? Подскажите плиз ...

Сообщение отредактировал Medwoodu: 17 Январь 2012 в 10:50

  • 0

Спонсор



Похожие темы Свернуть

Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей