Метка «xslt»

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

Погодная станция на Ethernet (HTTP+Modbus) с питанием по POE
Рисунок 1 — Фотография макетного образца

Несмотря на обилие статей про погодные станции на arduino (http://habrahabr.ru/post/165747/, habrahabr.ru/post/171525/, habrahabr.ru/post/213405/ ) Я все-таки решил опубликовать своё решение.

Функционал

Функции которые она выполняет:

  • Измерение температуры
  • Измерение влажности
  • Измерение давления
  • Измерение освещенности
  • Индикация измеренных параметров
  • Выдача измеренных параметров по интерфейсу HTTP в виде XML документа
  • Выдача по протоколу HTTP XSLT процессора для стилизации XML при отображении браузером
  • Выдача информации по Modbus (его предполагаю использовать в качестве протокола управления умным домом)
  • Питание через Passive POE

Читать полностью »

в 15:10, , рубрики: java, JAXB, XML, xslt, метки: , , ,

В одном из проектов понадобилось обрабатывать большие XML файлы, от сотен мегабайт до десятков гигабайт.
Причем выдернуть надо было только некоторые тэги с расположенные на различной «глубине». XSLT «в лоб» ломался от недостатка памяти. Пришлось подумать и вспомнить о потоковом парсере.
Читать полностью »

Формулировка проблемы

Думаю никому из веб-разработчиков не нужно объяснять что такое XSS и чем он опасен. Но в то же время, многие сайты, такие как форумы, блоги, социальные сети и т.п., стремятся предоставить пользователю возможность вставлять на страницу свой контент. Для удобства неискушенных пользователей изобретаются WYSIWYG-редакторы, делающие процесс добавления красивого комментария легким и приятным. Но за всем этим фасадом скрывается угроза безопасности. Фактически любой WYSIWYG-редактор отправляет на сервер не просто текст комментария, он отправляет HTML-код. И даже если сам редактор не предусматривает использования опасных HTML-тегов (например <iframe>), то злоумышленника это не остановит — он может послать на сервер произвольный HTML-текст, который может представлять опастность для других посетителей сайта. Я думаю мало кому понравится получить в свой браузер что-то наподобие:

<script type="text/javascript">window.location="http://hardcoresex.com/";</script>

Таким образом, возникает проблема: полученный от пользователя HTML-код необходимо фильтровать. Но что значить «фильтровать»? Каким должен быть алгоритм фильтрации, чтобы не создавать необоснованных ограничений легальным пользователям, но в то же время сделать невозможной XSS-атаку со стороны злоумышленника? Увы, но HTML достаточно сложен, написать хороший парсер достаточно непросто, а любая ошибка в нем может привести к тому, что у злоумышленника появится лазейка через которую он сможет нанести удар.
Читать полностью »

В моем предыдущем посте, представившем многоуважаемой публике веб-движок Easyweb, было сказано:

Планируется, что первая версия, которую можно будет назвать стабильной и полностью юзабельной, появится до конца года.

Поскольку до конца года осталось менее суток, то позвольте рассказать о том, что еще удалось сделать в этом году.

Читать полностью »

Easyweb — это верстальный движок общего назначения, написанный на PHP, и предназначенный для выдачи XML-ответа по HTTP-запросу. В его основе лежит шаблонизатор XSLT, а сам движок представляет собой набор решений основных задач в вебе: роутинг запросов, разграничение прав доступа, разделение способов получения данных и способов их представления, локализация, вспомогательные PHP классы и фасилити, и так далее. Проект является сборником архитектурных и концептуальных идей, накопившихся за шесть-семь лет разработки для веба.

Если говорить о классификации, то Easyweb, вероятно, больше всего похож на Content Management Framework. Он, в некотором смысле, немного выше уровнем, чем большинство программных фреймворков, поскольку основная часть продукта, созданного на Easyweb, выстроена на XML-технологиях. В то же время он гораздо ниже уровнем, чем привычные CMS — в нем нет встроенного пользовательского интерфейса, готовых шаблонов страниц или предустановленного набора SQL-запросов.

В двух словах, сайт или XML-сервис на Easyweb — это XML-конфиг, набор шаблонов страниц, база данных, а также скрипты для обработки POST-запросов. Все перечисленное создается вебмастером самостоятельно в его любимом текстовом редакторе, а также админке его любимой СУБД. Easyweb будет интересен тем, для кого выполняются все перечисленные условия:

  1. Если вас по каким-либо причинам не устраивают существующие CMS;
  2. Если вы задумываетесь о том, что нужно «написать все самому»;
  3. Если вас пугает сложность существующих программных фреймворков;
  4. Если вы любите XHTML, а также дружное семейство XML-технологий.

Читать полностью »

В статье вы не найдёте сравнительных тестов шаблонизаторов. Зато найдёте информацию об использовании xslt в качестве шаблонизатора на реальных проектах. Рассмотрены возможности именованных шаблонов, использование шаблонов-функций, справочников.

1. Структура проекта

Обычно страница сайта состоит из нескольких общих блоков (меню, футер, ...) и контентной части, которую для общности будем называть основным блоком. Все эти блоки размещаются внутри некоторого индексного шаблона, который знает в каком месте какой блок отобразить: меню должно быть вверху, основной блок в центре, а футер внизу.

Получаем следующую структуру

/themes - здесь раполагаются все шаблоны
/themes/index/main.xsl - индексный шаблон
/themes/models/user.xsl - именованные шаблоны, которые относятся к модели пользователя
/themes/inc/functions.xsl - именованные шаблоны-функции
/themes/blocks/footer.xsl - шаблон футера
/themes/blocks/menu.xsl - шаблон меню
/themes/cabinet/main.xsl - шаблон основного блока главной страницы кабинета пользователя

Контроллер главной страницы кабинета пользователя работает следующим образом:

  1. получает данные для основного блока, обрабатывает их с помощью /themes/cabinet/main.xsl и результат (готовый html) помещает в итоговый xml
  2. аналогично обрабатывает данные для других блоков (меню, футер) и результат помещает в xml
  3. итоговый xml, в котором находятся данные всех блоков, обрабатывается с помощью индексного шаблона /themes/index/main.xsl и результат отдаёт пользователю.

Читать полностью »

в 3:04, , рубрики: xslt, метки:

Простой шаблон, который преобразовывает XSLT с небольшим добавлением синтаксического сахара в обычный XSLT. Вместо описания привожу маленький пример, в котором используются все новые конструкции.

<p x:each="item" x:if-attr="position() mod 2" x:attr-class="'odd'" xmlns:x="xslt-sugar">
  <span class="date" x:value="date"/>
  <xsl:value-of select="title"/>
  <x:block x:if="description" x:value="concat(' ', description)" x:doe="yes"/>
</p>

Читать полностью »

Предположим, есть задача сделать форму фильтрации товаров на сайте примерно такого вида:

Взаимодействие Umi.CMS и Flash посредством функций Javascript

Сайт работает под управлением Umi.CMS, нужный каталог товаров создан, все свойства товаров заполнены. Нужно кроссбраузерно сверстать форму и заставить её работать. С последним трудностей не возникает, нужные для фильтрации инструменты в Umi присутствуют. Однако
верстка и программирование ползунков для выбора диапазона периодически доставляет немало хлопот.

Читать полностью »

Сделайте еще шаг к идеальной продуктивности ;)

image

Представляем вниманию хабрасообщества PhpStorm 4.0:

  • Полная поддержка PHP 5.4
  • Встроенный Code coverage для PHPUnit
  • Новые PHP code inspections
  • Сообщения PHP Code Sniffer прямо в редакторе
  • Встроенный Drupal-стиль
  • Лучшая в индустрии поддержка JavaScript (включая ECMAScript Harmony)

Читать полностью »

Вступление

В этой статье хочу поделиться с Вами моими попытками создать случайную (хотя уместнее буде сказать псевдослучайную) сортировку средствами XSLT, без использования сторонних приложений и расширений.

Изначально была задача сделать сортировку под PHP-ный XSLT процессор. Но захотелось сделать что-то более уневерсальное.

Опытный образец

Для начала нам понадобиться образец для тестирования сортировки. Не будем заниматься хитросплетениями и напишем просто.

Файл данных data.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="view.xsl"?>
<root>
<item id="1"/><item id="2"/><item id="3"/><item id="4"/><item id="5"/><item id="6"/><item id="7"/><item id="8"/><item id="9"/><item id="10"/>
</root>

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js