Почему XSLT так редко используется в Интернете? [закрыто]

12

XSLT является зрелым, широко принятым стандартом.

Его можно использовать в браузерах (даже в старых IE) и на стороне сервера (в nginx есть модуль XSLT, который, конечно же, можно использовать с языками программирования). Его реализации скомпилированы и, следовательно, должны быть намного быстрее, чем Python или JS. Реализация JS Saxon JS может использоваться, по крайней мере, как запасной вариант. Jinja, Angular, Ruby's Slim, ASP и PHP шаблоны даже не близки.

Шаблон XSL можно легко проверить в IDE. Сколько IDE могут помочь с Jinja или Angular?

Похоже, это идеальная идея для декомпозиции пользовательского интерфейса и данных с помощью XSLT.

Следует признать, что в некоторых случаях реализации могут давать разные результаты, но это проблема только с использованием шаблонов на стороне клиента. И то же самое с HTML, CSS и всем остальным, что делается на стороне клиента.

Итак, почему не XSLT?

Георгий Советов
источник
4
JSON проще, чем XML. Я не шучу, только вчера вечером я слышал, как разработчики были благодарны им за то, что им никогда не приходилось снова использовать XSLT. См .: stackoverflow.com/questions/4862310/json-and-xml-comparison
Дэн Уилсон
6
Вы когда-нибудь пытались сделать что-то нетривиальное с этим?
PlasmaHH
9
Является ли «потому что это агония использовать» правильный ответ ..?
продолжается, что
2
@thisextendsthat: Нет, потому что JavaScript и CSS также были мучительными для использования, но все же стали широко использоваться.
JacquesB
4
@JacquesB JS и CSS по- прежнему мучительны в использовании.
Энди

Ответы:

39

XSLT на самом деле не играет полезной роли в современной интерактивной сети. Цель XSLT - преобразовать один XML-язык в другой, но на самом деле вам никогда не нужно этого делать. Насколько мощная, быстрая и хорошо поддерживаемая технология не имеет значения, если у вас нет проблемы, для решения которой предназначена технология.

Есть несколько причин, по которым прервался сценарий использования XSLT:

  • HTML победил. Предполагалось, что XSLT будет полезен для преобразования содержимого «расширенного текста» в некотором формате семантической разметки в HTML. Но HTML сам по себе является прекрасным форматом, так почему бы не использовать его в первую очередь для контента и пропустить преобразование?
  • CSS стал намного мощнее. Одно из обещаний XSLT состояло в том, что вы можете сохранить исходную разметку чистой и семантической, а затем преобразовать ее в «презентационный HTML», который работает в разных браузерах и где вы можете переставлять элементы и так далее. Но вам не нужен презентационный HTML в наши дни, вы можете использовать семантический HTML, а CSS может выполнять необходимые стили и макет.
  • XML не стал повсеместным форматом для данных. При извлечении данных SQL из базы данных гораздо проще просто объединить их в шаблон, чем сначала преобразовать их в XML, а затем преобразовать через XSLT. И JSON почти заменил XML для структурированных данных на стороне клиента.
  • XSLT предназначен для преобразования всего документа за раз. Но на современных интерактивных веб-страницах небольшие фрагменты данных постоянно загружаются по частям и объединяются в страницу.
  • Данные просто не так сложны. В большинстве случаев более простые форматы шаблонов с заполнителями и повторителями прекрасно решают эту задачу. XSLT гораздо более мощный, но вам редко нужна эта дополнительная мощность, и он требует значительных затрат по сложности и уродству.

XSLT выросла из публикации, где вы можете использовать односторонний процесс от одного структурированного исходного формата до нескольких форматов публикации, таких как печать, PDF и статические веб-страницы. Большинство веб-сайтов не подходит для этого варианта использования.

JacquesB
источник
Очень информативный ответ (+1).
Джорджио
2
Я не знаю, совпадает ли мой опыт с опытом других пользователей, но одна из «точек продажи» XSLT, как мне объяснили, заключалась в снижении пропускной способности: если у вас большая обычная страница, вы отправляете минимум XML ( <chapter><title><par>...) и XSLT. бы «растягивает» с div, table, по trмере необходимости, с тем дополнением , что она может быть помещена в кэш. Поэтому (опять же, я не знаю, насколько широко было объяснено это «преимущество»), улучшенная пропускная способность также повредила бы его (и тот факт, что большинство HTML-страниц довольно маленькие).
SJuan76
@ SJuan76: Это идея о преобразовании семантической разметки в подробный презентационный HTML, который использует таблицы для разметки. К счастью, больше нет необходимости использовать таблицы для разметки, поэтому вариант использования является спорным.
JacquesB
1
@JacquesB Я использовал эту пару для этой страницы: programaths.be/job/job.xml, и она стала идеальной. XML используется для отображения страницы И проверки ответов на сгенерированный вопросник. Речь идет не о форматировании в таблицах, но XML предлагает мне хорошую абстракцию. Конечно, мне все равно, что люди обманывают. Но это показывает, что даже в наше время это может быть очень полезно!
programaths
9

Зависит от того, что вы подразумеваете под «в сети».

XSLT очень широко используется. Насколько мы можем судить по метрикам, таким как количество вопросов StackOverflow, он входит в топ-30 языков программирования, что, вероятно, делает его лучшим языком программирования для конкретной модели данных после SQL.

Но XSLT не широко используется на стороне клиента, то есть в браузере. Обычно он используется либо на стороне сервера для доставки содержимого по требованию в ответ на запросы HTTP, либо в пакетном режиме как часть рабочего процесса публикации. Конечно, он также используется во многих приложениях, которые имеют очень мало общего с Интернетом, например, в печатных изданиях.

Существует ряд причин, по которым XSLT не используется широко в браузере. Основная причина в том, что хорошая совместимая поддержка XSLT очень медленно поступала от поставщиков браузеров; никто не хотел использовать его, пока он не был доступен в каждом браузере, и к тому времени, когда он стал доступен в каждом браузере, вещи, которые люди хотели делать в браузере, уже продвинулись (помните «Web 2.0»?) и реализации XSLT в браузере не помогло создавать интерактивные приложения или получать данные с помощью AJAX.

Saxonica (отказ от ответственности, это мой продукт) попытался устранить эти пробелы с помощью Saxon-JS, но продукт опоздал на вечеринку, а разработка веб-сайтов на стороне клиента очень ориентирована на моду, поэтому недостаточно просто иметь продукт, который помечает все технические поля. В основе моды лежит то, что большинство сайтов, ориентированных на данные (в отличие от документов), переместились в сторону JSON, а не XML, главным образом потому, что JSON намного легче манипулировать из Javascript.

Другая проблема заключается в том, что XSLT - это язык «люби или ненавидь». Его декларативная, основанная на правилах, функционально-ориентированная парадигма привлекает многих из-за ее высокоуровневой природы, но может отталкивать тех, чей единственный опыт программирования заключается в написании императивного кода, который точно говорит компьютеру, что делать и в какой заказ.

Майкл Кей
источник
3

Я переворачиваюсь назад и вперед между ответом на этот вопрос и закрытием его как прежде всего основанного на мнении. Итак, вот мой флип:

Короче говоря, потому что XML делает дерьмовый язык программирования. Я думаю, что- то с семантикой XSLT, но с гораздо лучшим синтаксисом было бы совсем другим. Например, есть несколько классных языков XML-преобразования на основе Lisp.

XSLT не может решить, хочет ли он быть языком переписывания деревьев, функциональным языком или процедурным языком. У этого есть особенности всех тех, но это не очень хорошо ни в одном из них. Для любого из трех аспектов существуют лучшие языки.

Йорг Миттаг
источник
Синтаксис XML действительно может выглядеть многословно. Но какие еще языки поддерживаются везде?
Георгий Советов
XSLT - отличный функциональный язык IMO. То, где он падает, заключается в том, как он смешивает представление с логикой преобразования.
RubberDuck
4
@ GeorgeSoverov, почему так важно, чтобы нас поддерживали везде? Это нужно только поддерживать на вашем сервере.
Эсбен Сков Педерсен
1
Я думаю, что уродство языка не имеет значения, если оно служит для соответствующего случая использования. Просто посмотрите на успех JavaScript. Проблема с XSLT в том, что варианта использования просто нет.
JacquesB
1
Ну, вы, безусловно, продемонстрировали, что это вопрос, который привлекает основанные на мнении ответы ...
Майкл Кей
0

Потому что сам XML выглядит как устаревший мусор с обратной совместимостью в 99,9% случаев.

Единственный вариант использования, для которого XML не имеет немедленной превосходящей замены, это такие вещи, как docx или odf, и вполне возможно, что SGML был бы лучше *. То есть мы имеем невероятно богатую структуру документа со всеми видами вложенных друг в друга вещей с применением больших преобразований, чтобы оно могло правильно отображаться на экране и на принтере.

Почти все время XML используется для передачи структурированных данных, и кажется, что XSLT предназначен для преобразования структурированных данных документа в данные документа. Этот вариант использования вымирает. JSON напрямую превосходит XML для структурированных данных. ** И уценка, и YAML превосходят слегка отформатированные данные. Первоначальной поддержкой XML были встроенные парсеры в Java и Javacript. JSON преодолел этот барьер, используя встроенный синтаксический анализатор для случаев, когда источник JSON является доверенным (которого было большинство из них, когда он был молодым).

И мир изменился. Преимущество встроенной библиотеки - тривиальное преимущество. XHTML был полностью отклонен, и его замена унаследована не от него, а от его предшественника.

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

* Они учили в колледже, что SGML никогда не был реализован. Они лгали.

** Я слышал жалобы на плохие форматы чисел в JSON. С другой стороны, XML не имеет числового формата, поэтому простая вставка всех типов данных в строку все равно выигрывает у XML.

Джошуа
источник