Работа с legacy-xsl-кодом Евгения Фирсова saigo@yamoney.ru.

Презентация:



Advertisements
Похожие презентации
XSLT-ТРАНСФОРМАЦИЯ XML- ТЕХНОЛОГИИ Лекция 4. Трансформация XML- данных Категории трансформации Структурные трансформации – трансформация одного словаря.
Advertisements

Инструменты VS 2010 для работы с XML языком XML редактор. XSLT отладчик XSLT Profiler, инструмент позволяющий разработчикам измерять, оценивать и решать.
Java Advanced XML Transformations 1.0 (XSLT 1.0).
Отладка программ на JavaScript. FireBug.. FireBug – дополнение к FireFox Возможности: Анализ html-кода страницы Вычисление CSS Работа с JavaScript Анализ.
Программный доступ к XML DOM, SAX,.NET среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря.
XML eXtensible Markup Language 1.Пространства имён (Namespaces) 2.Язык навигации внутри XML-документа (XPath)
#html5camp JavaScript на сервере – node.js на Windows Гайдар Руководитель направления веб-технологий, Microsoft.
Frontik сервер-агрегатор на python. Зачем frontik? I.
Отладка и профилирование JavaScript/Ajax Александр Шуркаев Newmedia Stars htmlcoder.visions.ru /
Основные типы алгоритмических структур. Линейный алгоритм (следование). Алгоритм, в котором команды выполняются последовательно одна за другой, называется.
XML eXtensible Markup Language 1.Язык навигации внутри XML-документа (XPath) 2.Пространства имён (Namespaces) 3.Язык трансформаций (XSLT)
Использование XSLT для разработки сайтов (на ASP.NET) Андрей Майоров, BYTE-force twitter.com/xorets.
Страница 1 Действие Страница 2 ЗапросДействие Страница 3 Работа с Web-приложением с точки зрения пользователя.
Автоматическая обработка естественного языка I. Обработка письменного текста.
Среда разработки для языка DRL/PR для разработки документации семейств программных продуктов.
БАЗЫ ДАННЫХ ЛЕКЦИЯ 14. тема: XML-ТЕХНОЛОГИИ В БАЗАХ ДАННЫХ.
OpenEdge и Corticon: использование бизнес-правил разработчиками и пользователями OpenEdge Максим Соколов 2013 год.
Интерактивная языконезависимая система поиска шаблонов и дубликатов в программном коде Куделевский Евгений Валерьевич, 545 группа Научный руководитель:
Selenium: Начало.. Особенности WEB-приложений Множество браузеров, отличающиеся реализацией Отсутсвие строгих правил в HTML Различные конфигурации на.
Реализация концепции построения и формирования отраслевой системы государственного учета, регистрации и мониторинга (ОСГУРМ) информационных ресурсов сферы.
Транксрипт:

Работа с legacy-xsl-кодом Евгения Фирсова

ПЕРВЫЙ ЭТАП - ПОНИМАНИЕ

Написание документации Не скатываемся в простое перечисление вызовов, шаблонов, переменных. Описываем логику, а не алгоритм (отвечаем на вопрос «зачем», а не «как»). Пишем не для себя, а для «того парня», который ничего о внутреннем устройстве проекта не знает.

Написание документации Комментировать код – рано: –собираем документацию воедино –не создаём лишние ревизии

XSL Document- oriented text XMLSchema Document- oriented text DocBook Пусть код описывает себя сам. Написание документации

XSLDoc от Jeni Tennison (

Статистическое исследование кода Коммерческие продукты с функциональностью рефакторинга: –Microsoft Visual Studio –IntelliJ IDEA –Eclipse –oXigen рефакторинг с использованием шаблонов автоматическое создание шаблонов переименование шаблонов и переменных

Статистическое исследование кода Скриптовые языки, поддерживающие regexp: open(InFile, "get_regexp.xsl") || die; while ($line = ) { if ($line =~ / /) { $match = $1; $mode = $3 ne "" ? "with mode $3" : ""; print "we apply template $match $mode\n"; } close (InFile);

Статистическое исследование кода Скриптовые языки, поддерживающие DOM: xfile.setProperty "SelectionNamespaces", "xmlns:xsl=' set templates = xfile.selectNodes("//xsl:template") for each template in templates line = "" if template.getAttribute("match") > "" then line = "we apply template " & template.getAttribute("match") end if if template.getAttribute("mode") > "" then line = line & " with mode " & template.getAttribute("mode") end if WScript.Echo line next

Статистическое исследование кода XSL. XML/XSLXSL Statistic text

Взлом «чёрных ящиков» Коммерческие отладчики. XMLSpy Debugger слежение за контекстом вычисление XPATH- выражений пошаговое выполнение XPATH-точки слежения и останова список вызванных шаблонов, включая встроенные

Взлом «чёрных ящиков» xsltproc --verbose xsltCompilePattern : parsing 'page' xsltCompilePattern : parsed page, default priority added pattern : 'page' priority Found AVT href: {url} xsltCompilePattern : parsing 'test' xsltCompilePattern : parsed test, default priority added pattern : 'test' priority parsed 3 templates Resolving attribute sets references Registered 0 modules Creating sub-dictionary from stylesheet for transformation reusing transformation dict for output Registering global variables Registering global variables from xsltproc_test.xsl xsltProcessOneNode: applying template '/' for / xsltApplyOneTemplate: copy node html xsltApplyTemplates: select page xsltApplyTemplates: list of 1 nodes xsltProcessOneNode: applying template 'page' for page xsltApplyOneTemplate: copy node head xsltApplyOneTemplate: copy node title

Взлом «чёрных ящиков» Текстовые маркеры. … *** … … …

Взлом «чёрных ящиков» Восстановление исходного XML-документа по вызываемым шаблонам.

Восстановление исходного XML-документа по вызываемым шаблонам. Взлом «чёрных ящиков»

Плагины к FireFox: –Web Developer –Live HTTP headers –FireBug

ВТОРОЙ ЭТАП – ИЗМЕНЕНИЕ/REFACTORING

Не жадничать… С каких частей проекта стоит начинать refactoring? с наиболее значимых в бизнес-плане частей; с наиболее сложных по реализации частей; с наиболее уязвимых частей.

Не жадничать… xsltproc --profile numbermatchnamemodeCallsTot 100us Avg 0/188 1page177 2test362 3 nolink341 4title

Не жадничать… XMLSpy Profiler. количество вызовов время работы с и без учёта времени выполнения вложенных инструкций время выполнения XPATH-выражений

Не играть с тенью… Пусть лучше работает плохо, чем не работает никак. Пусть медленно, но с меньшим количеством ошибок. –Не называть точных сроков.

Разделять и властвовать… XForms – изменение функциональности.

Разделять и властвовать… DocBook – расширение функциональности.

Отделять ресурсы от кода… css; javascript, в той части, которая не зависит от xsl-кода; тексты, относящиеся к интерфейсу: –многоязычность; –удалённое редактирование; –«быстрые» изменения.

Оптимизировать xsl-код… Зачем? удобно быстро продолжение в следующей серии…

Евгения Фирсова icq: