Содержание
- Error xsltprocessor transformtoxml no stylesheet associated to this object
- Error xsltprocessor transformtoxml no stylesheet associated to this object
- Error xsltprocessor transformtoxml no stylesheet associated to this object
Error xsltprocessor transformtoxml no stylesheet associated to this object
У меня вопрос к знающим людям, пишу страничку по прозьбе знакомых. В этом деле еще новичок, но работу надо сделать срочно! по этому своими силами не справлюсь
надо сделать чтото вроде новостной ленты, записи решила сохранять в xml файл
которые нужно вывести разумеется на страницу
foreach ( $xml -> msg as $msg ) <
echo ‘
‘ . $msg -> name . «
» ;
echo $msg -> message . «
» ;
>
но различный символы (русские буквы и всякие ö ä ü õ выводятся коряво (меняла кодировку- не помогло), в сам xml файл записывает все как надо
= new DOMDocument ();
$XML -> load ( ‘data.xml’ );
$xslt = new XSLTProcessor ();
$XSL = new DOMDocument ();
$XSL -> load ( ‘data.xsl’ );
$xslt -> importStylesheet ( $XSL );
print $xslt -> transformToXML ( $XML );
?>
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///C:/wamp/www/haigla/data.xsl line 2 element stylesheet in C:wampwwwhaiglaforum.php on line 12
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsltParseStylesheetProcess : document is not a stylesheet in C:wampwwwhaiglaforum.php on line 12
Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: No stylesheet associated to this object in C:wampwwwhaiglaforum.php on line 13
в гугле о том что это такое и как с этим бороться ничего вразумительного не нашла
вопрос: нужно чтоб пхп страничка красивенько все выводила. что сделать для этого?
Источник
Error xsltprocessor transformtoxml no stylesheet associated to this object
У меня вопрос к знающим людям, пишу страничку по прозьбе знакомых. В этом деле еще новичок, но работу надо сделать срочно! по этому своими силами не справлюсь
надо сделать чтото вроде новостной ленты, записи решила сохранять в xml файл
которые нужно вывести разумеется на страницу
foreach ( $xml -> msg as $msg ) <
echo ‘
‘ . $msg -> name . «
» ;
echo $msg -> message . «
» ;
>
но различный символы (русские буквы и всякие ö ä ü õ выводятся коряво (меняла кодировку- не помогло), в сам xml файл записывает все как надо
= new DOMDocument ();
$XML -> load ( ‘data.xml’ );
$xslt = new XSLTProcessor ();
$XSL = new DOMDocument ();
$XSL -> load ( ‘data.xsl’ );
$xslt -> importStylesheet ( $XSL );
print $xslt -> transformToXML ( $XML );
?>
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///C:/wamp/www/haigla/data.xsl line 2 element stylesheet in C:wampwwwhaiglaforum.php on line 12
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsltParseStylesheetProcess : document is not a stylesheet in C:wampwwwhaiglaforum.php on line 12
Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: No stylesheet associated to this object in C:wampwwwhaiglaforum.php on line 13
в гугле о том что это такое и как с этим бороться ничего вразумительного не нашла
вопрос: нужно чтоб пхп страничка красивенько все выводила. что сделать для этого?
Источник
Error xsltprocessor transformtoxml no stylesheet associated to this object
Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.7.2009
Репутация: нет
Всего: нет
У меня вопрос к знающим людям, пишу страничку по прозьбе знакомых. В этом деле еще новичок, но работу надо сделать срочно! по этому своими силами не справлюсь
надо сделать чтото вроде новостной ленты, записи решила сохранять в xml файл
которые нужно вывести разумеется на страницу
lilin |
|
||
» ;
>
Код | |
foreach ($xml->msg as $msg) < echo ‘ |
|
‘.$msg->name.» | «; echo $msg->message.» |
но различный символы (русские буквы и всякие ö ä ü õ выводятся коряво (меняла кодировку- не помогло), в сам xml файл записывает все как надо
Код |
load( ‘data.xml’ ); |
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( ‘data.xsl’);
$xslt->importStylesheet( $XSL );
print $xslt->transformToXML( $XML );
?>
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///C:/wamp/www/haigla/data.xsl line 2 element stylesheet in C:wampwwwhaiglaforum.php on line 12
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsltParseStylesheetProcess : document is not a stylesheet in C:wampwwwhaiglaforum.php on line 12
Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: No stylesheet associated to this object in C:wampwwwhaiglaforum.php on line 13
в гугле о том что это такое и как с этим бороться ничего вразумительного не нашла
вопрос: нужно чтоб пхп страничка красивенько все выводила. что сделать для этого?
PS совет «искать ошибку в ДНК» не помогает
jsa |
|
||
Опытный Профиль Репутация: 3 |
|||
|
Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.7.2009
Репутация: нет
Всего: нет
lilin |
|
||
Код |
Name1 Name2 |
Код | ||
|
jsa |
|
||
Опытный Профиль Репутация: 3 а че за странная такая кодировка |
|||
|
Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.7.2009
Репутация: нет
Всего: нет
кодировка для балтийских символов
с xml исправила — не помогло
lilin |
|
||
|
jsa |
|
||||||||
Опытный Профиль Репутация: 3
Это сообщение отредактировал(а) jsa — 22.7.2009, 10:26
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском — возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.
[ Время генерации скрипта: 0.1104 ] [ Использовано запросов: 20 ] [ GZIP включён ] Источник Adblock |
Ошибки:
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: Undefined variable in /transform.php on line 24 Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file /protocols.xsl line 18 element template in /transform.php on line 24 Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: Failed to compile predicate in /transform.php on line 24 Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: Undefined variable in /transform.php on line 24 Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file /home6/oneninfi/public_html/craigfreeman/iphone/project1/protocols.xsl line 22 element template in /transform.php on line 24 Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: Failed to compile predicate in /transform.php on line 24 Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: No stylesheet associated to this object in /transform.php on line 35
PHP:
$xsl = new XSLTProcessor();
$xsldoc = new DOMDocument();
$xsldoc->load($_GET['xsl'].'.xsl'); // protocols.xsl
$xsl->importStyleSheet($xsldoc); // LINE 24
if(isset($_GET['sectionNumber']))
$xsl->setParameter('', 'sectionNumber', $_GET['sectionNumber']);
if(isset($_GET['protocolNumber']))
$xsl->setParameter('', 'protocolNumber', $_GET['protocolNumber']);
if(isset($_GET['entryNumber']))
$xsl->setParameter('', 'entryNumber', $_GET['entryNumber']);
$xmldoc = new DOMDocument();
$xmldoc->load($_GET['xml'].'.xml');
echo $xsl->transformToXML($xmldoc); // LINE 35
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="protocolNumber"></xsl:param>
<xsl:param name="sectionNumber"></xsl:param>
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="page/section[@id=$sectionNumber]"> // LINE 18
<xsl:apply-templates select="protocol[@id=$protocolNumber]"/>
</xsl:template>
<xsl:template match="protocol[@id=$protocolNumber]"> // LINE 22
<h4>(<xsl:value-of select="$sectionNumber"/>.<xsl:value-of select="@id"/>) <xsl:value-of select="@title"/></h4>
<!-- Applies templates to all child elements -->
<ol><xsl:apply-templates/></ol>
</xsl:template>
<xsl:template match="start">
<span class="start"><xsl:value-of select="@level" /></span>
</xsl:template>
<xsl:template match="stop">
<span class="stop"><xsl:value-of select="@level" /> STOP</span>
</xsl:template>
<xsl:template match="note">
<span class="note"><span class="noteType"><xsl:value-of select="@title" /></span>: <xsl:value-of select="." /></span>
</xsl:template>
<xsl:template match="step">
<li><span class="step"><xsl:value-of select="."/></span></li>
</xsl:template>
</xsl:stylesheet>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<page type="Protocols">
<section id="3" title="Adult Cardiac Life Support">
<protocol id="0" title="Cardiac Arrest - General Procedures">
<start level="All Levels"/>
<step>Verify patient is pulseless and apneic.</step>
<step>Initiate or continue CPR. CPR is to be continued at all times, except during defibrillation and /or interruptions < 10 sec for patient transfer.</step>
<step>Assure airway patency and begin use of BVM. Provide initial BLS airway management, including Oropharyngeal or Nasopharyngeal Airway.</step>
<step>Apply AED or SAED if available. If AED already in place, wait until current shock sequence completion to switch to another AED or manual monitor – may use previously applied patches if compatible with new unit.</step>
<step>Follow prompts provided by AED/SAED device.</step>
<step>Utilize ALS, or initiate timely transport toward ALS (ALS intercept or hospital if closer). If ALS not available, no more than 3 shocks should be delivered at the scene. Defibrillation should not be performed in a moving ambulance.</step>
<step>Advise receiving hospital ASAP.</step>
<stop level="EMT"/>
<start level="EMT-I, CC & P"/>
<step>If AED/SAED not already applied, quick look using manual monitor and defibrillate PRN after CPR of at least 5 cycles (about 2 minutes). Apply limb leads and pads in between shock sequences as appropriate.</step>
<step>Obtain vascular access.</step>
<step>Secure definitive airway. If BLS airway is sufficient to maintain chest rise, continue until additional time or resources are available. If unable to intubate, continue use of BLS airway adjuncts or use alternate airway device.<br/><br/>emove Bag Valve device whenever transferring patient, moving patient in and out of Ambulance, or other times
when Bag Valve device may dislodge the device.<br/><br/>Reassess airway patency after any movement of patient.</step>
<stop level="EMT-I" />
<start level="EMT-CC & P"/>
<step>Give medications as listed in the following specific arrhythmia / dysrhythmia protocols.
</step>
<note title="NOTE">Should IV/IO access not be available, Epinephrine, Atropine, and Lidocaine may be administered via ETT under
direct, on-line Medical Control.</note>
</protocol></section></page>
PHP5
Поддержка XML/XSL
Мысли? Что-нибудь очевидное?
За последние 24 часа нас посетил 10961 программист и 564 робота. Сейчас ищут 414 программистов …
-
Опять же возвращаясь к старой теме.
Поцоны написали, что можно сделать так:-
<xsl:text><![CDATA[<?php echo 123 ?>]]></xsl:text>
но так можно сделать, если код xslt-шаблона находится в том-же файле, где и XSLT-процессор.
У меня же все xslt-преобразования находятся в .xsl-файлах, поэтому тупо вываливает на страичку <?php echo 123 ?>
Попробовал сделать такое:-
AddHandler application/x—httpd—php .php .xsl
но как и следовало ожидать, ничего не получилось.
Какие еще могут быть варианты встроить php в xslt?
Добавлено спустя 57 секунд:
Хм, наверное можно сделать левый xml-файл, в котором и будет php-код на входе и xml на выходе, а его уже обрабатывать xslt-шаблонами -
-
- С нами с:
- 7 апр 2011
- Сообщения:
- 2.523
- Симпатии:
- 2
-
AddType application/x-httpd-php .xsl
В начале файла не забыть
-
header(‘Content-type: text/xml’);
Тип добавить перед строкой
-
Action application/x-httpd-php «путь к php»
-
В начале какого файла? xsl-шаблона? Если в xsl-шаблон добавить хедер — XSLTProcessor выдаст ошибку
-
- С нами с:
- 7 апр 2011
- Сообщения:
- 2.523
- Симпатии:
- 2
Не понятно. Обычно есть xml файлы, они в своём коде требуют файл преобразований xsl в теге
-
<?xml-stylesheet href=»style.xsl» type=»text/xsl»?>
Вот для xsl файла и настроить Апач, чтобы он воспринимал его, как php скрипт.
В .htaccess или в httpd.conf вписать строчку
-
AddType application/x-httpd-php .xsl
Если xsl будет восприниматься, как php скрипт, то можно вписывать «<?php echo 123 ?>» хоть куда, или header(‘Content-type: text/xml’); или лучше header(‘Content-type: text/xsl’);
Проблема может возникнуть, если оставлять в xml файлах объявление
-
<?xml version=»1.0″ encoding=»utf-8″?>
т.к. php будет сбивать с толку начало «<?». Нужно вывести объявление отдельно
-
header(‘Content-type: text/xsl’);
-
echo ‘<?xml version=»1.0″ encoding=»utf-8″?>’;
-
<xsl:stylesheet version=»1.0″ xmlns:xsl=»http://www.w3.org/1999/XSL/Transform»>
-
Ок, тогда давай так.
index.php:
-
$doc = new DOMDocument();
-
$proc= new XSLTProcessor();
-
$proc->importStyleSheet($xsl);
-
echo $proc->transformToXML($doc);
test.xml
-
<?xml version=«1.0» encoding=«UTF-8»?>
test.xsl
-
<?xml version=«1.0» encoding=«UTF-8»?>
-
<xsl:stylesheet version=»1.0″ xmlns:xsl=»http://www.w3.org/1999/XSL/Transform»>
-
<xsl:output method=»html» encoding=»utf-8″ indent=»yes»/>
-
<xsl:template match=»udata»>
-
<xsl:call-template name=»factorial»>
-
<xsl:with-param name=»n» select=»num»/>
-
<xsl:template name=»factorial»>
-
<xsl:when test=»$n=0″>1</xsl:when>
-
<xsl:variable name=»n-1″>
-
<xsl:call-template name=»factorial»>
-
<xsl:with-param name=»n» select=»$n — 1″/>
-
<xsl:value-of select=»$n * number($n-1)»/>
запускаем index.php, получаем в браузере 720
Что мне в этом test.xsl дописать, чтобы можно было выполнить php-код? Вот хотя-бы тот-же session_start(); например
Добавлено спустя 13 минут 59 секунд:
Если же мы добавим в наш test.xsl вот тот хедер, то получим что-то типа этого:-
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, ‘<‘ not found in
Поскольку test.xsl уже не валидный xml-файл
ну и в том-же духе дальше:
-
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error in
-
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsltParseStylesheetProcess : empty stylesheet in
-
Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: No stylesheet associated to this object in
-
-
- С нами с:
- 7 апр 2011
- Сообщения:
- 2.523
- Симпатии:
- 2
Мда, я тебя не правильно понял. Никогда не использовал XSLTProcessor, т.к. считал, что загружать им сервер не стоит. Делал вывод отдельно сгенерированных xml и xsl, полагаясь на браузер пользователя.
Т.к. нужно всё это преобразовать на сервере, можно так:
index.php-
//index.php//использование XSLTProcessor
-
include(‘test.xml’);//парсинг/выполнение/присоединение переменных
-
$doc->loadXML($docF);//вместо ->load(файл)
-
$xsl->loadXML($xslF);//вместо ->load(файл)
-
$proc= new XSLTProcessor();
-
$proc->importStyleSheet($xsl);
-
echo $proc->transformToXML($doc);
test.xml
-
echo ‘<?xml version=»1.0″ encoding=»UTF-8″?>’,«n«;
-
//и любой другой php код…
В test.xsl то же самое сделать, вывести ‘<?xml version=»1.0″ encoding=»UTF-8″?>’ через echo.
В этом случае, если не придется вызывать xml и xsl из браузера, то не нужно добавлять в .htaccess
-
AddType application/x-httpd-php .xsl
-
AddType application/x-httpd-php .xml
-
Да тут наверное можно было в index.php загрузить xsl через file_get_content и отдать его XSLT-процессору через loadXML а не через load., и даже не пришлось бы городить htaccess — xsl-шаблон бы находился в php-файле.
Но проблема в другом
На сервере я ничего сделать не могу, кроме как править XSLT-шаблоны. Это движок UMI.CMS. Понадобилось на сайт добавить нестандартный блок, который невозможно сделать средствами движка. Можно это реализовать через макросы, но документация по написанию макросов очень скудная. Сами же файлы движка выглядят примерно так:-
$v8b1dc169bf460ee884fceef66c6607d6 = cmsController::getInstance();$v72ee76c5c29383b7c9f9225c1fa4d10b = $v8b1dc169bf460ee884fceef66c6607d6->getCurrentDomain()->getId();$v100664c6e2c0333b19a729f2f3ddb7dd = CURRENT_WORKING_DIR . «/sys-temp/sitemap/{$v72ee76c5c29383b7c9f9225c1fa4d10b}/»;$v736007832d2167baaae763fd3a3f3cf1 = dir($v100664c6e2c0333b19a729f2f3ddb7dd);while (false !== ($v8c7dd922ad47494fc02c388e12c00eac = $v736007832d2167baaae763fd3a3f3cf1->read())) {if(is_file($v100664c6e2c0333b19a729f2f3ddb7dd . $v8c7dd922ad47494fc02c388e12c00eac)) readfile($v100664c6e2c0333b19a729f2f3ddb7dd . $v8c7dd922ad47494fc02c388e12c00eac);}$v736007832d2167baaae763fd3a3f3cf1->close();echo ‘</urlset>’;
таких вот файлов еще несколько тысяч и все это в одну строчку
-