Шаблоны: XSLT против jQuery - PullRequest
       20

Шаблоны: XSLT против jQuery

15 голосов
/ 04 октября 2011

Мне нужен механизм шаблонов для html-страниц в комплекте с моим приложением. Сначала я посмотрел на все шаблоны шаблонов javascript (например, шаблоны jQuery), но так как мои входные данные - XML, я вдруг снова вспомнил XSLT. Я натолкнулся на десятки библиотек, но ни один из них, похоже, не использовал XSLT, поэтому я полностью забыл о его существовании и о том, насколько он полезен для создания шаблонов.

Итак, XSLT медленно устаревают и постепенно прекращаются альтернативами javascript? Я где-то читал, что XSLT был слишком сложен для работы большинства пользователей, но это только его недостаток или есть больше минусов?

Обновление: Я могу думать только об одном недостатке: с XSLT вся страница должна быть проанализирована / обработана перед тем, как что-либо показывать пользователю, а с помощью javascript страница уже видна и отсутствует элементы заполняются впоследствии.

Ответы [ 4 ]

8 голосов
/ 04 октября 2011

XSLT - это современный язык преобразования XML и функциональный язык программирования. Предстоящая версия 3.0 изначально поддерживает (вместе с XPath 3.0) функции высшего порядка, среди других новых функций.

XSLT не является «старым» (мало кто знает XSLT 2.0 или знает, что WG XSLT WG работает над XSLT 3.0 ).

XSLT в браузере недавно получил большой толчок на Saxon CE - урезанный процессор XSLT 2.0, который скомпилирован из Java в Javascript и доступен на стороне клиента пять основных браузеров. @ Майкл Кей даже продемонстрировал на своем iPhone XSLT 2.0 на клиентской стороне ...

7 голосов
/ 04 октября 2011

XSLT - хорошее решение для шаблонов.Язык и синтаксис немного необычны - «выберите / когда» вместо «case / switch» - яркий пример - но он хорошо выполняет свою работу.

Главное преимущество XSLT в том, что вам не нужен JavaScript для его использования;создайте его правильно, и каждый основной браузер будет отображать его как HTML, независимо от того, включен JS или нет.Это может быть проще на процессоре, чем решения JavaScript, хотя я не знаю никого, кто это проверял.Это также очевидный выбор, если вы уже имеете дело с данными XML, как и вы.

Недостатком является то, что это (относительно) старая технология, которая в значительной степени заброшена, и хотя браузеры все еще поддерживают ее, онине продвинулся с этим.Firefox имеет проблему с выходом HTML из-за того, что у него нет намерений исправлять , а у Chrome довольно серьезная проблема с @ includes .IE, по-видимому, обновлен, но, конечно, это применимо только к последней версии.

В результате, если вы хотите использовать XSLT, вы должны протестировать его во всех основных браузерах и обойтиошибки, несмотря на то, что технология существует примерно с 2006 года. Она ни в коем случае не устарела, просто она не очень популярна, потому что она не так компактна и не проста для чтения, как, скажем, шаблоны JSON + jQuery.

0 голосов
/ 24 октября 2012

Вот пример для загрузки XML и XSL и выполнения преобразования в Javascript.http://www.w3schools.com/xsl/xsl_client.asp

Иногда невозможно импортировать XSLT в XML-документ, например, получить XML от третьего лица и использовать преобразование XSLT в HTML и отобразить в браузере.

0 голосов
/ 04 октября 2011

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

На стороне сервера XSLT - отличный инструмент с поддержкой многих языков программирования (по крайней мере для XSLT 1.0, для XSLT 2.0можно выбирать только между Java и .NET).Поэтому, возможно, у вас может быть какое-то промежуточное программное обеспечение, которое получает запрос на стороне клиента, передает его веб-службе или тому, что генерирует XML, отображает его как HTML с таблицей стилей XSLT и передает результат HTML в браузер.Если ваш конкретный сценарий разрешает кэширование на уровне промежуточного программного обеспечения, ваше приложение также будет работать быстрее, поскольку клиенту не нужно обрабатывать шаблоны jQuery или XSLT.

...