Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5

#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
Сейчас завершил переезд сайта от хостера realhost.ru на valuehost.ru
Точнее хостера сменил, а сайт залил с локалки. На локальной машине я менял версию CMS
Так вот загляните пожалуйста на сайт http://www.dualtek.ru/
Подскажите от чего на первой странице вылазиют предупреждения:

ПРЕДУПРЕЖДЕНИЕ: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file /pub/home/dualtek2/htdocs/ line 36 element sort в файле /pub/home/dualtek2/htdocs/modules/Xsl/Xsl.class.php (строка 266)
ПРЕДУПРЕЖДЕНИЕ: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: element sort is not allowed within that context в файле /pub/home/dualtek2/htdocs/modules/Xsl/Xsl.class.php (строка 266)
ПРЕДУПРЕЖДЕНИЕ: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: No stylesheet associated to this object в файле /pub/home/dualtek2/htdocs/modules/Xsl/Xsl.class.php (строка 270)

На локальноч компе у меня стоял на денвере PHP 5.2.12 но там не было поддержки XSL (не нашел нужных библиотек) и выводились эти предупреждения. Тогда я установил PHP 4.4.7 и все работает шоколадно.
Так вот перенес все файлы и базу к хостеру и опять эта свистопляска.
Подскажите с чем это может быть связано и как это исправить?
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
В дополнение к предыдущему посту!
Проблема возникает на куске кода из шаблона страницы
Вот этот кусок с вызовом API^

<?# Вывод информационных систем$InformationSystem = new InformationSystem();$external_propertys=array();$external_propertys['ОтображатьСсылкуНаАрхив']=0;$external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=0;# Количество выводимых элементов$item_count = 2;$InformationSystem->ShowInformationSystem(1, false, 'СписокНовостей', $item_count, 0, $external_propertys);  ?>

Странно что он работает на PHP4. а на PHP5 возникают проблемы.
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
Судя по всему проблема в XSL

СписокНовостей

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="/document">

   <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
   <xsl:variable name="parent_group_id" select="blocks/parent_group_id"/>
   
   <!-- Если в находимся корне - выводим название информационной системы -->
   <xsl:if test="blocks/parent_group_id=0">
      <!--<h1><xsl:value-of disable-output-escaping="yes" select="blocks/name"/></h1>
      <xsl:value-of disable-output-escaping="yes" select="blocks/description"/>      -->
   </xsl:if>
   
   <!-- Если в находимся в группе - выводим название группы -->
   <xsl:if test="blocks/parent_group_id!=0">
      <!--<h1><xsl:value-of disable-output-escaping="yes" select=".//group[@id=$parent_group_id]/name"/></h1>-->

      <!-- Путь к группе -->
      <!--<p><xsl:apply-templates select=".//group[@id=$parent_group_id]" mode="goup_path"/></p>-->
   </xsl:if>
   
   <!-- Отображение подгрупп данной группы -->
   <!--<ul>
      <xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="groups"/>
   </ul>-->
   
   <!-- Отображение записи информационного блока -->
   <table border="0" width="100%" cellSpacing="0">
   <xsl:apply-templates select="blocks/items/item[item_status=1]"/>
                   <xsl:sort select="@item_date" order="descending"/>            
                
                </table>

</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
<!-- ======================================================== -->

<xsl:template match="group" mode="goup_path">
   <xsl:variable name="parent_id" select="@parent_id"/>

   <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

   <xsl:if test="@parent_id=0">
      <a href="{/document/blocks/url}"><xsl:value-of disable-output-escaping="yes" select="/document/blocks/name"/></a>
   </xsl:if>

   -> <a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит ссылки подгруппы информационного элемента -->
<!-- ======================================================== -->
<xsl:template match="group" mode="groups">
   <li>
      <xsl:if test="small_image!=''">
         <a href="{/document/blocks/url}{fullpath}" target="_blank"><img src="{small_image}"/></a>&#xA0;
      </xsl:if>
      <a href="{/document/blocks/url}{fullpath}"><b><xsl:value-of disable-output-escaping="yes" select="name"/></b></a>
   </li>
</xsl:template>

<!-- ======================== -->
<!-- Данные об инф. элементах -->
<!-- ======================== -->
<xsl:template match="blocks/items/item">

<xsl:if test="position() != 1">
<tr><td height="7px"></td></tr>
<tr><td colspan="2" class="line"></td></tr>
<tr><td height="7px"></td></tr>
</xsl:if>

<tr><td>
  <table width="100%" cellSpacing="0">
  <tr>
    <td class="newsdate"><xsl:value-of disable-output-escaping="yes" select="item_date"/></td>
    <td class="text" align="right"><a href="{item_path}"><img src="/images/img/menu_p.gif" align="absMiddle" style="margin-bottom:-2px;"/>подробнее</a></td>
  </tr>
  <tr>
    <td colspan="2" class="text"><xsl:value-of disable-output-escaping="yes" select="item_description"/></td>
  </tr>
  </table>
</td></tr>

</xsl:template>

<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
   <xsl:param name="i" select="0"/>
   <xsl:param name="n"/>
   <xsl:param name="current_page"/>
   
   <xsl:if test="$n > $i">

      <!-- Разделитель ссылок -->
      <xsl:if test="$i != 0 and $n > $current_page"> - </xsl:if>

      <!-- Ставим ссылку на страницу-->
      <xsl:if test="$i != $current_page">

         <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
         <xsl:variable name="parent_group_id" select="/document/blocks/parent_group_id" />

         <!-- Определяем группу для формирования адреса ссылки -->
         <xsl:variable name="group_link"><xsl:choose>
            <!-- Если группа не корневая (!=0) -->
            <xsl:when test="$parent_group_id != 0"><xsl:value-of select="/document/blocks//group[@id=$parent_group_id]/fullpath"/></xsl:when>
            <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
            <xsl:otherwise></xsl:otherwise>
         </xsl:choose></xsl:variable>

         <!-- Определяем адрес ссылки -->
         <xsl:variable name="number_link"><xsl:choose>
            <!-- Если не нулевой уровень -->
            <xsl:when test="$i != 0">page-<xsl:value-of select="$i+1"/>/</xsl:when>
            <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
            <xsl:otherwise></xsl:otherwise>
         </xsl:choose></xsl:variable>

         <a href="{/document/blocks/url}{$group_link}{$number_link}"><xsl:value-of select="$i+1"/></a>
      </xsl:if>
      
      <!-- Не ставим ссылку на страницу-->
      <xsl:if test="$i = $current_page">
         <span class="current"><xsl:value-of select="$i+1"/></span>
      </xsl:if>

      <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
      <xsl:call-template name="for">
         <xsl:with-param name="i" select="$i + 1"/>
         <xsl:with-param name="n" select="$n"/>
         <xsl:with-param name="current_page" select="$current_page"/>
      </xsl:call-template>
   </xsl:if>
</xsl:template>

</xsl:stylesheet>

Если я ее заменяю на другую, то данные выводятся.
Подскажите где в ней косяк.
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
На сколько я пока разобрался проблема в следующих операциях

      <table border="0" width="100%" cellSpacing="0">
         <xsl:apply-templates select="blocks/items/item[item_status=1]"/>
         <xsl:sort select="@item_date" order="descending"/>
         
      </table>

или в тех что они вызывают.
Только никак не могу понять в чем именно дело.
Модератор
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
Belkin,
В тексте ошибки прямо указано на проблемуBelkin писал(а):
element sort is not allowed within that context
и приведенный Вами код это наглядно демонстрирует, т.к. <xsl:apply-templates ... /> закрыт и сортировка висит сама по себе.
Должно быть:
<xsl:apply-templates select="blocks/items/item[item_status=1]">
         <xsl:sort select="@item_date" order="descending"/>
</xsl:apply-templates>

В разных версиях PHP используются разные XSLT-процессоры, вероятно по этому на PHP-4 Вы не видели эту ошибку.
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
HostCMS,
Спасибо, действительно прошлядел закрывающийся тег.
Исправил, теперь информация этого блока выводится, но в отличии от других блоков она в неонятной кодировке, точнее кодировке UTF-8

С 15.04.2010 г. вступают в силу новые цены.
Подробности смотрите РІ РЅР°С?ем прайс-листе.

Теперь то из-за чего? Как ее поменять на windows-1251?
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
Дополнение к предыдущему посту.
При этом остальные страницы идут в кодировке windows-1251 и тексты все видны.
Те же самые новости на странице "Новости"
Голова уже идет кругом от этих XSL
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
На localhost опять поменял PHP на версию 4
И проблема с кодировкой ушла сама.
Что-то уже вообще не знаю что делать.
Надеюсь на ваши подсказки.

Заранее благодарен.
Модератор
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
Belkin,
Причина аналогичная, в самое начало XSL_шаблона добавьте вместо существующего блока следующее:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
#
Re: Переход с HostCMS v 3.2.4 на HostCMS: 5.9.5
HostCMS,
Огромное спасибо!
Как я понимаю, у меня была не полностью задана спецификация для XSL?
Сам в той области даже не рыл, искал в других кусках кода.
Еще раз спасибо!
Авторизация