Полезные ссылки на документацию по XSL

#
Re: Полезные ссылки на документацию по XSL
compaq, в нашем руководстве по интеграции, начиная со стр. 23, описаны общие принципы работы с XML/XSLT. Рассмотрение ведется на примерах XML-кодов и XSL-шаблонов, подобных используемым в системе.
Скачать руководство: http://www.hostcms.ru/documentation/
#
Re: Полезные ссылки на документацию по XSL
а меня наоборот интересует документация по PHP для работы с HostCMS
Модератор
#
Re: Полезные ссылки на документацию по XSL
Mikhail,
в сети достаточно много книг по PHP, можете выбирать любую. В качестве справочника по PHP лучше смотреть первоисточник - php.net
Если нужно быстро узнать описание функции, набираете php.net/имя_функции, например php.net/foreach
#
Re: Полезные ссылки на документацию по XSL
#
Re: Полезные ссылки на документацию по XSL
Есть XML
<?xml version="1.0" encoding="windows-1251"?>
<shop id="2" current_group_id="17">
   ...
   <item id="239" group="17">
             ....
      <property id="137" dir_id="0" xml_name="link">
         <name>Ссылка</name>
         <xml_name>link</xml_name>
         <type>0</type>
         <order>0</order>
         <prefics></prefics>
         <value>http://123123</value>
      </property>
      
   </item>
</shop>


Хочу получить link
<xsl:variable name="link" select="property[@xml_name=link]/value"/>

Не получаю. Что не так делаю ?
<xsl:variable name="link" select="property[@id=137]/value"/>

Работает
http://www.aiventa.ru
Модератор
#
Re: Полезные ссылки на документацию по XSL
link - узел с таким названием, 'link' - строка:
<xsl:variable name="link" select="property[@xml_name='link']/value"/>
Модератор
#
Re: Полезные ссылки на документацию по XSL
Пример использования
<!--[if gte IE 6]>
  <link rel="stylesheet" type="text/css" media="screen" href="ie.css" />
<![endif]-->
в XSL:
<xsl:comment><![CDATA[[if gte IE 6]>
  <link rel="stylesheet" type="text/css" media="screen" href="ie.css" />
<![endif]]]></xsl:comment>
Модератор
#
Re: Полезные ссылки на документацию по XSL
Оптимизация (значительное ускорение) работы с большим деревом групп.
Обратите внимание, оси // являются весьма трудоемкими при обработке большого дерева, подобная проблема может возникать при множественном вызове
.//group[@id=$parent_group_id]

Например, на страницу выводится 1000 элементов, каждый из которых дважды получает текущую группу с помощью
.//group[@id=$parent_group_id]/...

Соответственно анализ дерева групп происходит 2000 раз!
Сокращаем до одного раза:
<?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"/>
   
   <xsl:template match="/">
      <xsl:apply-templates select="/document"/>
   </xsl:template>
   
   <xsl:template match="/document">
      
      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:variable name="parent_group_id" select="/document/this_group_id"/>
      <xsl:variable name="group_node" select=".//group[@id=$parent_group_id]"/>
      
...      
                     <xsl:apply-templates select="blocks/items/item[@group_id=$parent_group_id]">
                        <!-- Передаем уже готовый узел -->
                        <xsl:with-param name="group_node" select="$group_node"/>
                     </xsl:apply-templates>
...
   </xsl:template>
   
   <xsl:template match="blocks/items/item">
      
      <xsl:param name="group_node" />

      <!-- далее используем $group_node/... -->
...
   </xsl:template>
</xsl:stylesheet>
#
Re: Re: Полезные ссылки на документацию по XSL
После внедрения данного кода, пропала вся информация о группах и их инфоэлементах на главной странице инфосистемы.
Модератор
#
Re: Полезные ссылки на документацию по XSL
2wind,
Как Вы можете видеть, в указанном примере вывод групп не затрагивается вовсе! У Вас были еще другие доработки, о них можно написать запрос в поддержку.
Авторизация