Wilson Album: Love ...
Я уже не однократно останавливался в своих статьях на магнитолах и мультимедийных центрах, которые ...
Некоторые проекты используют XSLT в качестве основного «движка» шаблонов. Помимо известных недостатков XSLT (например, его многословности, относительной медлительности и т.д.) у него есть и преимущества: «стандартность» языка, его идеология отсутствия «побочных эффектов» и pattern matching, возможность при необходимости вызывать методы helper-классов из шаблонов (через exslt-расширение). Какое-то время назад я выкладывал библиотеку ShortXSLT, позволяющую вместо громоздких <xsl:value-of select="/root/abc"/> и <xsl:choose>...</xsl:choose> писать просто {/root/abc} и {if...}...{elseif}...{/if} без потери производительности, так что проблема многословности отчасти решается.
Но сейчас речь не о преимуществах и недостатках XSLT (я уверен, и противники, и сторонники этой технологии найдутся в изобилии). Я бы хотел описать один прием, который удобно применять в
существующих проектах с XSLT-шаблонами, и привести ссылку на библиотеку, реализующую данный прием с хорошей производительностью.
Передаем данные в XSLT, минуя генерацию текстового представления XML
Представьте, что у нас есть контроллер, генерирующий некоторый вложенный PHP-список объектов для отображения на странице. Он должен этот массив преобразовать в XML, который потом пойдет на вход XSLT-шаблону. Хорошо бы, чтобы данное преобразование из структур PHP в XML выполнялось не вручную в каждом контроллере, а был некоторый промежуточный слой абстракции, который умеет применять XSLT-шаблон прямо к PHP-данным, минуя текстовое XML-представление. Так мы уменьшим вероятность ошибок, да и письмо сократится. Мы сможем работать с XSLT-шаблонами напрямую, минуя XML-представление данных.
Некоторое время назад я написал на Си PHP-расширение dom_varimport (также выложено на GitHub). Оно содержит одноименную функцию, на вход которой подается объект DOMDocument и PHP-массив любой вложенности. Функция заполняет переданный ей DOMDocument XML-представлением входного массива, и делает она это очень быстро — примерно
в 20 раз быстрее, чем делал бы код, написанный на чистом PHP. Большой документ размером около 1 МБ с тысячами вложенных свойств и объектов формируется примерно за 1-2 миллисекунды.
Например, вызов: Читать дальше →
Нежно люблю черный цвет. Мне кажется, он чрезвычайно элегантен. Так что мой сегодняшний ...
Нежно люблю черный цвет. Мне кажется, он чрезвычайно элегантен. Так что мой сегодняшний аутфит — это настоящая ода черному цвету :) I truly love black color. It’s so elegant and smart. So this look of the day is dedicated … Читать далее
→
О, для этого образа я скомбинировала мое любимое платье с пальто MaxMara Weekend с меховым ...
О, для этого образа я скомбинировала мое любимое платье с пальто MaxMara Weekend с меховым воротником. Цветовая гамма пальто сочетается с цветами платья, хотя рисунок у них, конечно же, разный. Но вместе все смотрится очень гармонично. Кстати, про платье. Ношу … Читать далее
→