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

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

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

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


person Muis    schedule 04.10.2011    source источник
comment
Самая большая афера заключается в том, что XSLT может дать неожиданную морщину плоскому мозгу. :)   -  person Dimitre Novatchev    schedule 04.10.2011
comment
Там очень хороший комментарий! поскольку использование xslt все остальные варианты кажутся такими длинными: P, хотя бритва выглядит достойной рассмотрения. не забывайте, что вы все еще можете использовать сценарии в своих шаблонах!   -  person Treemonkey    schedule 04.10.2011


Ответы (4)


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

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

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

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

person Blazemonger    schedule 04.10.2011
comment
Я думаю, что я собираюсь сделать это на стороне сервера. Для производительности это не имеет значения, потому что серверный/клиентский код работает на одном компьютере, поскольку это настольное приложение, но это предотвращает проблемы, связанные с браузером, подобные той, которую вы упомянули. - person Muis; 04.10.2011

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

XSLT не «старый» (мало кто знает XSLT 2.0 или знает, что XSLT 3.0 разрабатывается рабочей группой W3C XSLT).

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

person Dimitre Novatchev    schedule 04.10.2011
comment
Есть идеи, планирует ли Microsoft поддерживать XSLT 2.0 на своих платформах разработки? - person Darrel Miller; 04.10.2011
comment
Для преобразований на стороне сервера он все еще может использоваться, но для клиентской стороны я не могу найти никого, кто бы его использовал. Единственным крупным сайтом, который его использует, был портал Blizzard WoW, и даже они перестали его использовать. Кроме того, когда я искал что-то похожее на XSLT, кроме данных JSON, ничего не было найдено (кроме некоторого доказательства концепции). Итак, если концепция все еще жива, почему никто не разработал что-то подобное для JSON? - person Muis; 04.10.2011
comment
JSON действительно предназначен для компактных данных, в то время как XML предназначен для разметки целых документов. Они не совсем заполняют одну и ту же нишу. - person Blazemonger; 06.02.2013
comment
Спасибо за информацию о Saxon CE. Это действительно очень мощно. Я использую это для разработки веб-приложения, в котором технически подкованные пользователи могут создавать свои собственные макеты страниц без написания полного кода. Они просто создают простые файлы XML, а Saxon и jQuery делают все остальное. - person ChrisR; 26.08.2013

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

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

person chiborg    schedule 04.10.2011
comment
Но вы не можете кэшировать динамические данные, кроме как для каждого пользователя и для каждого просмотра. - person Andrew; 05.12.2017

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

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

person Lalit Jha    schedule 24.10.2012