Обновление XSLT 1.0 до XSLT 2.0


что участвует в обновлении с XSLT 1.0 до 2.0?
1 - Каковы возможные причины для модернизации?
2-Каковы возможные причины отказа от модернизации?
3-и, наконец,каковы шаги по обновлению?

Я надеюсь на резюме-краткая версия:)

2 52

2 ответа:

что участвует в обновлении с 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 -- the xsl:function инструкция.

  • переменные диапазона в выражениях XPath (for предложения).

  • гораздо лучше и мощнее обработка строк -- XPath 2.0 поддерживает регулярные выражения в своем tokenize(),matches() и replace() функции.

  • гораздо лучше и мощнее обработка строк -- XSLT 2.0 поддержка регулярных выражений -- the xsl:analyze-string,xsl:matching-substring и xsl:non-matching-substring новый XSLT инструкции.

  • более удобная, мощная и выразительная группировка: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-и, наконец,каковы шаги по обновлению?

  • изменить на xsl:stylesheet или xsl:transform элемент "1.0" до "2.0".

  • удалить все xxx:node-set() функции.

  • удалите любую лань.

  • будет готов к сюрпризу, что xsl:value-of теперь выводит не только первый, но все элементы последовательности.

  • попробуйте использовать новый xsl:sequence инструкция как можно больше-использовать его, чтобы заменить xsl:copy-of инструкции; используйте его вместо xsl:value-of в любое время, когда тип вывода не является строковым или текстовым узлом.

  • много теста.

  • когда тестирование подтвердило, что код работает как ожидается, что вы начнете рефакторинг (если сочтете это необходимым). Рекомендуется объявлять типы для любых переменных, параметров, шаблонов и функций. Это может выявить новые, скрытые ошибки и их исправление повышает качество вашего кода.

  • дополнительно, решите, какие именованные шаблоны переписать как xsl:function.

  • решите, если вам все еще нужно некоторые функции расширения, которые используются в старой версии, или вы можете переписать их легко использовать новые, мощные возможности обработки.

заключительные замечания: не все вышеперечисленные шаги необходимы, и можно остановить и объявить миграцию успешной при нулевых результатах тестирования ошибок. Гораздо чище начать использовать все функции XSLT 2.0 / XPath 2.0 в новая проектов.

ответ Дмитрия очень полный и на 100% точный (как всегда), но есть один момент, который я бы добавил. При обновлении до процессора 2.0 у вас есть выбор: оставить атрибут version равным "1.0" и работать в "режиме обратной совместимости" или изменить атрибут version на "2.0". Люди часто спрашивают, какой подход рекомендуется.

мой совет, если у вас есть хороший набор тестов для ваших таблиц стилей, сделайте решительный шаг: установите version="2.0", запустите тесты, и если есть какие-то проблемы, исправить их. Как правило, проблем будет код, который никогда не был совершенно прав, в первую очередь, и работал только случайно. Но если у вас нет хорошего набора тестов и вы обеспокоены надежностью своей рабочей нагрузки, то оставить version="1.0"-это подход с меньшим риском: процессор будет эмулировать все причуды XSLT 1.0, такие как xsl:value-игнорирование всех, кроме первого элемента, и странные правила для сравнения чисел со строками.