То, когда XSLT является соответствующим решением для определения XML, преобразовывает вместо того, чтобы использовать язык сценариев как Python?

То, когда XSLT является соответствующим решением для определения XML, преобразовывает вместо того, чтобы использовать язык сценариев как Python?

7
задан Clay3981 21 December 2009 в 22:59
поделиться

7 ответов

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

Конечно, все это предполагает, что вам нужно только преобразовать входной XML в какую-то другую форму. . В реальном мире требования меняются, и внезапно вам приходится не только преобразовывать XML, но и выполнять некоторые операции на его основе. И хотя XSLT является полным по Тьюрингу, на самом деле это не язык программирования общего назначения, поэтому для обеспечения перспективности может быть безопаснее использовать другой язык. Тем не менее, я, вероятно, реализовал бы первую версию в XSLT, потому что я считаю ее более быстрой и легкой для понимания, и только если XSLT позже окажется непригодным, я буду рассматривать что-то другое.

3
ответ дан 7 December 2019 в 16:42
поделиться

Есть много совпадений.

  • Если вы можете указать меньшее количество шаблонных правил, чем требуется для рекурсивного определения того же поведения с кодом, тогда XSLT имеет смысл.
  • Если человек, поддерживающий правила в течение длительного времени, более комфортно и знаком с кодом (или имеет лучшие инструменты для поддержки), чем XML / XSLT, то код - лучший способ.
  • Если вы хотите иметь возможность поддерживать массовый параллелизм для повышения производительности, тогда XSLT (или такой функциональный язык, как F #) может быть вашим решением, хотя это может быть практически недоступно прямо сейчас (хотя должно быть в будущем ).
0
ответ дан 7 December 2019 в 16:42
поделиться

В основном это связано с тем, что XML представляет собой иерархическую древовидную структуру данных.

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

Если ваши XML-данные относительно плоские и тег означает везде одно и то же, тогда преимущества не так очевидны, но если означает одно в корне и другое внутри и что-то еще, если оно находится внутри < Z> после тогда XSLT становится намного проще.

0
ответ дан 7 December 2019 в 16:42
поделиться

Я считаю, что XSLT очень полезен для простых задач, а также не зависит от платформы (XSLT встроен во многие языки). Однако я не нахожу его легко масштабируемым, и поскольку мне также нужно выполнять вычисления, специфичные для предметной области, очень утомительно писать обычные операции рекурсивным функциональным способом.

Также XSLT2.0 действительно необходим для таких операций, как группирование (без него вы должны помнить о методе Мюнхи, который является умным, но не интуитивно понятным). Однако не все системы поддерживают XSLT2.0.

0
ответ дан 7 December 2019 в 16:42
поделиться

С точки зрения производительности, некоторые XSL-процессоры компилируют преобразование в двоичный файл перед его запуском. Если преобразование будет использоваться много раз, то это может быть большим преимуществом в производительности.

0
ответ дан 7 December 2019 в 16:42
поделиться

Сразу же после этого, если вы трансформируете XML во что-то кроме HTML, XML или текста, XSLT - это не то, что вы должны использовать.

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

.
0
ответ дан 7 December 2019 в 16:42
поделиться

Если вам или кому-то, с кем вы работаете, удобнее использовать XSLT, или если есть какая-то техническая польза от использования XSLT (например, интеграция XSLT в Cocoon), то используйте XSLT. В противном случае, это почти всегда причиняет больше боли, чем Вы думаете. Вы будете гораздо счастливее, используя такой язык, как Python (с lxml), Ruby (с rexml) или даже PHP (с SimpleXML). Вы даже можете соединить его с библиотекой шаблонов (например, genshi, с Python), чтобы сделать работу еще проще.

Предприняв оба подхода, я уверен, что в долгосрочной перспективе вы будете счастливее, используя что-то, отличное от XSLT.

.
0
ответ дан 7 December 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: