Проблема с работой парсера XSLT

alexeyco

Новичок
Проблема с работой парсера XSLT

В папку C:\\Windows\System\ положил файлы: iconv.dll, expat.dll и sablot.dll из установленного у меня дистриба php.

При выполнении скрипта, например:
Код:
    $xml = '<?xml version="1.0" encoding="WINDOWS-1251"?>
<tutorial>
<enimals>
  <dogs>
  <dog>
    <dogName>sdfddfd</dogName>
    <dogWeight caption="sdfd">18</dogWeight>
    <dogColor>Dog 1</dogColor>
  </dog>
  <dog>
    <dogName>sdfdfdf</dogName>
    <dogWeight caption="sdsd">10</dogWeight>
    <dogColor>Dog 11</dogColor>
  </dog>
  <dog>
    <dogName>sdfsdfsdf</dogName>
    <dogWeight caption="ddd">2</dogWeight>
    <dogColor>Dog 111</dogColor>
  </dog>
  <dog>
    <dogName>sdfsdf</dogName>
    <dogWeight caption="dddd">25</dogWeight>
    <dogColor>Dog 11111</dogColor>
  </dog>
  </dogs>
</enimals>
</tutorial>';

$xsl = '<?xml version="1.0" encoding="WINDOWS-1251" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:output method="html" indent="yes" encoding="Windows-1251"/>
<xsl:template match="/">
<table border="1">
<tr bgcolor="#CCCCCC">
<td align="center"><strong>sdfsdf</strong></td>
<td align="center"><strong>sdfdf</strong></td>
<td align="center"><strong>sdfdsf</strong></td>
</tr>
<xsl:for-each select="tutorial/enimals/dogs/dog">
<tr bgcolor="#F5F5F5">
<td><xsl:value-of select="dogName"/></td>
<td align="right"><xsl:value-of select="dogWeight"/> <xsl:value-of select="dogWeight/@caption"/></td>
<td><xsl:value-of select="dogColor"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>';

    $arguments = array(
      '/_xml' => $xml,
      '/_xsl' => $xsl);

    $xslt      = xslt_create();
    xslt_set_encoding($xslt, 'windows-1251');
    $html = @xslt_process($xslt, 'arg:/_xml', "arg:/_xsl", NULL, $arguments);

    if (empty($html)) {

      die('Template->compile: XSLT processing error<textarea style="width: 400px; height: 300px;">'. xslt_error($xslt) . '</textarea>');

    }

    xslt_free($xslt);

    echo $html;
Конва получает такое:
Код:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0">
<xsl:output method="html" indent="yes" encoding="Windows-1251"/>
<xsl:template match="/">
<table border="1">
<tr bgcolor="#CCCCCC">
<td align="center">
<strong>sdfsdf</strong>
</td>
<td align="center">
<strong>sdfdf</strong>
</td>
<td align="center">
<strong>sdfdsf</strong>
</td>
</tr>
<xsl:for-each select="tutorial/enimals/dogs/dog">
<tr bgcolor="#F5F5F5">
<td>
<xsl:value-of select="dogName"/>
</td>
<td align="right">
<xsl:value-of select="dogWeight"/>
<xsl:value-of select="dogWeight/@caption"/>
</td><td><xsl:value-of select="dogColor"/>
</td></tr></xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Подозреваю, что обработчик, сволочь, не парсит ничерта... Что делать?

-~{}~ 21.08.07 22:31:

Господа! Ну неужели никто не подскажет ничего? Что может быть не так? Я проверял - связка работает в осле если ее разобрать на два статичных файла. В phpinfo() поддержка xslt стоит как enabled. Что делать то?
 

AmdY

Пью пиво
Команда форума
а ты и дальше используй собаку и будет тебе частье.
 

alexeyco

Новичок
собаку использовать нельзя... страница собирается из разных блоков которые вообще говоря не одинаковы при каждой загрузке... проблема решена - был косяк в синтаксисе xslt... я чуток переписал и все заработало...
 

Фанат

oncle terrible
Команда форума
AmdY
у него там есть обработчик ошибки.
то есть, тот единственный случай, когда ее использование оправдано.
 

Alexandre

PHPПенсионер
у него там есть обработчик ошибки.
то есть, тот единственный случай, когда ее использование оправдано.
онако, он не срабатывает. Я заметил такой косяк был в 4м пхп, когда есть незначительная ошибка, то отдается неоттрансформированный шаблон (правда под виндой только).
 
Сверху