Что входит в обновление с XSLT 1.0 до 2.0?
1 - Каковы возможные причины для обновления?
Если вы программист XSLT, вы в значительной степени выиграете от более удобного и выразительного языка XSLT 2.0 + XPath 2.0 и новой XDM (модель данных XPath).
Возможно, вы захотите посмотреть этот курс XSLT 2.0 Pluralsight , чтобы получить твердое и систематическое понимание возможностей XSLT 2.0 .
У вас есть:
Строгая типизация и все доступные типы XSD.
Возможность определять свои собственные типы (схемы).
тип последовательности XPath 2.0, который не имеет аналогов (просто отсутствует) в XPath 1.0.
Возможность определения и записи функций в чистом XSLT - инструкция xsl:function
.
Переменные диапазона в выражениях XPath (предложение for
).
Гораздо лучшая и более мощная обработка строк - XPath 2.0 поддерживает регулярные выражения в своих функциях tokenize()
, matches()
и replace()
.
Гораздо лучшая и более мощная обработка строк - поддержка регулярных выражений в XSLT 2.0 - новые инструкции XSLT xsl:analyze-string
, xsl:matching-substring
и xsl:non-matching-substring
.
Более удобная, мощная и выразительная группировка: инструкция xsl:for-each-group
.
Множество новых, очень мощных функций XPath 2.0 - таких как функции даты, времени и продолжительности, и это лишь некоторые из них.
Новые операторы XPath intersect
, except
, is
, >>
, <<
, some
, every
, instance of
, castable as
, ..., и т.д.
Общие операторы XPath >
, <
и т. Д. Теперь работают с любым типом упорядоченного значения (не только с числами, как в XPath 1.0).
Новые, более безопасные операторы сравнения значений: lt
, le
, eq
, gt
, ge
, ne
.
Оператор XPath 2.0 to
, позволяющий иметь xsl:for-each select="1 to $N"
Эти и многие другие улучшения / новые функции значительно повышают производительность любого программиста XSLT, что позволяет завершить разработку XSLT 2.0 за небольшую долю времени, необходимого для разработки тех же модулей с XSLT 1.0.
Строгая типизация позволяет обнаруживать многие ошибки во время компиляции и немедленно исправлять. Для меня эта строгая безопасность типов - самое большое преимущество использования XSLT 2.0.
2 - Каковы возможные причины НЕ обновления?
Часто возможно, разумно и рентабельно оставить существующие устаревшие приложения XSLT 1.0 без изменений и продолжать использовать их с XSLT 1.0, в то же время разрабатывая только новые приложения с использованием XSLT 2.0.
Ваше управление + любые другие нетехнические причины.
Наличие большого количества устаревших приложений XSLT 1.0, написанных в плохом стиле (например, с использованием функций DOE или расширений, которые теперь необходимо переписать и реорганизовать код).
Нет доступного процессора XSLT 2.0.
3 - И, наконец, каковы шаги по обновлению?
Измените атрибут version
элемента xsl:stylesheet
или xsl:transform
с "1.0"
на "2.0"
.
Удалить все xxx:node-set()
функции.
Удалить все DOE.
Будьте готовы к удивлению, что xsl:value-of
теперь выводит не только первый, но все элементов последовательности.
Старайтесь использовать как можно больше новой инструкции xsl:sequence
- используйте ее для замены любых инструкций xsl:copy-of
; используйте его вместо xsl:value-of
в любое время, когда тип вывода не является строковым или текстовым узлом.
Испытание экстенсивно.
Когда тестирование подтвердит, что код работает должным образом, начните рефакторинг (если это будет сочтено необходимым).Рекомендуется объявлять типы для любых переменных, параметров, шаблонов и функций.Это может выявить новые, скрытые ошибки, а их исправление повышает качество вашего кода.
При желании можно выбрать, какие именованные шаблоны следует переписать, как xsl:function
.
Решите, нужны ли вам некоторые функции расширения, которые использовались в старой версии, или вы можете легко переписать их, используя новые мощные возможности XSLT.
Заключительные замечания : Не все вышеперечисленные шаги являются необходимыми, и можно остановить и объявить миграцию успешной при нулевых результатах тестирования ошибок.Намного понятнее начать использовать все функции XSLT 2.0 / XPath 2.0 в новых проектах.