Upload
alexander-babich
View
54
Download
1
Embed Size (px)
Citation preview
Продвинутыевозможности XSLT
http://ProductivityBlog.com.ua
О чем пойдет речь
▪ xsl:key
▪ xsl:variable
▪ xsl:key и предикаты Xpath
▪ xsl:for-each-group
▪ xsl:number
▪ xsl:analyze-string
▪ xsl: function
Файлы и инструменты
Файлы практических работ в файле XSLT_6.zip в папке Practice
XMLSpy, StyleVision из пакета ALTOVA MissionKit
xsl:key
▪Для поиска данных после их сохранения
▪определение xsl:key
▪выше xsl:template – глобально для файла
▪ имя, критерий, значение
▪функция key()
▪указываем имя
xsl:key
Xsl:variable
▪ Определение именованного значения
▪имя
Практика –поиск по ключу
▪ Открыть XMLSpy
▪ Cоздать файл XSLT 2.0 (Generic Transformation) и сохранить подименем key.xslt
▪ Подключить файл Julius_Caesar.xml
▪ Метод – XML to HTML
▪ Добавить тег xsl:variable
▪ Добавить тег xsl:key
Готовый файл можно найти в папке Chapter6\transformations
Практика –поиск по ключу (cont)
▪ Добавить тег xsl:template
▪ Cохранить изменения
▪ Запустить трансформацію
▪ Сохранить результат какOutput1.html
Готовый файл можно найти в папке Chapter6\transformations
Практика –улучшаем вывод
Добавить акт, сцену и действующих лиц
Готовый файл можно найти в папке Chapter6\transformations
Практика –улучшаем вывод
▪ Сохранить файл как key2.xslt
▪ Запустить трансформацию
▪ Сохранить результат как Output2.html
Готовый файл можно найти в папке Chapter6\transformations
xsl:key и предикаты XPath
▪ Поиск у нас был реализован через XPath-выражения, зачем же xsl:key?
▪ гибкость (присмотритесь к переменной $FRC)
▪скорость (быстрее, чем XPath)
xsl:for-each-group
▪ Группировка данныхна основе атрибутов select и group-by
▪ current-grouping-key() – значение group-by
▪ current-group() –группа элементов
Практика –группировка данных
▪ Создать новый XSLT 2.0-файл в XMLSpy (Generic Transformation)
▪ Подключить файл с данными – Julius_Caesar.xml
▪ Cохранить файл как ForEachGroup.xslt
▪ Изменить метод на HTML
Готовый файл можно найти в папке Chapter6\transformations
Практика –группировка данных
▪ Добавить тег xsl:template
Готовый файл можно найти в папке Chapter6\transformations
▪ Cохранить изменения
▪ Запустить трансформацию
▪ Сохранить результат какOutput3.html
xsl:number
▪ подсчет элементов XML-данных и вывод их порядковых номеров
▪ атрибут level – single или any
▪ Атрибут format – 1, 001, A
Практика –нумерация данных
▪ Открыть key2.xslt
▪ Добавить во внутренний цикл
▪ Сохранить как Number.xslt
▪ Запустить трансформацию, сохранить результат как Output4.html
▪ Изменить добавленный тег
▪ Сохранить как Number2.xslt
▪ Запустить трансформацию, сохранить результат как Output5.html
Готовый файл можно найти в папке Chapter6\transformations
Практика –усложняем задачу
▪ Открыть Number.xslt
▪ Изменить циклы таким образом
▪ Запустить трансформацию
▪ Сохранить результат как Output6.html
▪ Выполнить поиск «Friends, Romans»
Готовый файл можно найти в папке Chapter6\transformations
xsl-analyze-string
▪ Поиск строки, соответствующей регулярному выражению и ее преобразование
▪ \w+ - хотя бы один алфавитноцифровой символ
▪ xsl-matching-substring – выполняем преобразования найденных строк
▪ xsl-non-matching-substring – действия с остальными строками
xsl-analyze-string
Практика –обработка строк
▪ Открыть PartsList.xslt
▪ Cохранить как String.xslt
▪ Запустить трансформацию
▪ Внутрь сортировкидобавить
▪ Cохранить изменения
▪ Сохранить результат какOutput7.html
Готовый файл можно найти в папке Chapter6\transformations
Практика –усложняем задачу
Цель – слово “The” не должно быть с большой буквы
▪ Изменить теги анализа строк
▪ Сохранить как fix_THE.xslt
▪ Запустить трансформацию, сохранить как Output8.html
Готовый файл можно найти в папке Chapter6\transformations
Модульность кода
▪ Модульность кода = его повторноеиспользование в других проектах
▪ускорение и удешевление разработки и поддержки
▪ xsl:function и xsl:include
▪попробуем вынести в отдельную функцию код, исправляющий слово The
xsl:function
▪ Определение пространства имен
▪ Определение функции
▪ее тело
▪xsl:param – становится локальной переменной
▪ Вызов
▪namespace:function_name(параметр)
Практика –создание функций
▪ Открыть fix_THE.xslt
▪ Добавить атрибут к тегу xsl:stylesheet
▪ Добавить определение функции
▪ Перенести внутрь определениявесь код из xsl:analyze-string, изменив атрибут select
▪ Внутрь сортировки добавить вызов функции
▪ Сохранить как Function.xslt
▪ Запустить трансформацию, сохранить в Output9.html
Готовый файл можно найти в папке Chapter6\transformations
Практика –подключение файлов
▪ Создать новый XSLT 2.0-файл (Generic Transformation)
▪ Cохранить как My_Functions.xslt
▪ Добавить атрибут с пространством имен
▪ Удалить тег xsl:output
▪ Перенести в файл определение функции из Function.xslt
Готовый файл можно найти в папке Chapter6\transformations
Практика –подключение файлов
▪ Cохранить My_Functions.xslt
▪ Перейти к Functions.xslt и вставить на месте вырезанного тега xsl:function
▪ Cохранить как include.xslt
▪ Запустить трансформацию и сохранитькак Output10.html
▪ В файл можно добавить еще функций –создать библиотеку
Готовый файл можно найти в папке Chapter6\transformations
Подводим итоги
▪ Мы изучили некоторыепродвинутые возможности XSLT
▪ Научились создавать функции и библиотеки функций
▪ Использовали XMLSpy
Вопросы и ответы