То, когда XSLT является соответствующим решением для определения XML, преобразовывает вместо того, чтобы использовать язык сценариев как Python?
Если вы не хотите думать о вещах как знакомство с разработчиками, я бы сказал почти всегда, если у вас есть XSLT 2.0 или, по крайней мере, EXSLT, поскольку XSLT 1.0 довольно ограничивает (если вам нужны только структурные преобразования, 1.0 достаточно, но если вам нужно что-то сделать с контентом, вы хочу держаться подальше от 1.0). XSLT специально разработан для преобразования XML, и я обнаружил, что он намного лучше для этой задачи, чем библиотеки XML в языках программирования общего назначения.
Конечно, все это предполагает, что вам нужно только преобразовать входной XML в какую-то другую форму. . В реальном мире требования меняются, и внезапно вам приходится не только преобразовывать XML, но и выполнять некоторые операции на его основе. И хотя XSLT является полным по Тьюрингу, на самом деле это не язык программирования общего назначения, поэтому для обеспечения перспективности может быть безопаснее использовать другой язык. Тем не менее, я, вероятно, реализовал бы первую версию в XSLT, потому что я считаю ее более быстрой и легкой для понимания, и только если XSLT позже окажется непригодным, я буду рассматривать что-то другое.
Есть много совпадений.
В основном это связано с тем, что XML представляет собой иерархическую древовидную структуру данных.
Вы можете настроить операции, которые будут выполняться, когда определенные шаблоны совпадают, где бы они ни появлялись в дереве XML-файла.
Вы также можете каскадировать преобразования, чтобы некоторые из них применялись / игнорировались в зависимости от предшествующих операций дальше по дереву.
Если ваши XML-данные относительно плоские и тег
означает везде одно и то же, тогда преимущества не так очевидны, но если
означает одно в корне и другое внутри
и что-то еще, если оно находится внутри < Z>
после
тогда XSLT становится намного проще.
Я считаю, что XSLT очень полезен для простых задач, а также не зависит от платформы (XSLT встроен во многие языки). Однако я не нахожу его легко масштабируемым, и поскольку мне также нужно выполнять вычисления, специфичные для предметной области, очень утомительно писать обычные операции рекурсивным функциональным способом.
Также XSLT2.0 действительно необходим для таких операций, как группирование (без него вы должны помнить о методе Мюнхи, который является умным, но не интуитивно понятным). Однако не все системы поддерживают XSLT2.0.
С точки зрения производительности, некоторые XSL-процессоры компилируют преобразование в двоичный файл перед его запуском. Если преобразование будет использоваться много раз, то это может быть большим преимуществом в производительности.
Сразу же после этого, если вы трансформируете XML во что-то кроме HTML, XML или текста, XSLT - это не то, что вы должны использовать.
Кроме этого, я проделал кучу работы с XSLT, и мне еще предстоит столкнуться со случаем, когда я использовал XSLT для трансформирования XML и нашел, что хотел бы выбрать что-то другое. Как и в случае с jk, мой ответ "почти всегда"
.Если вам или кому-то, с кем вы работаете, удобнее использовать XSLT, или если есть какая-то техническая польза от использования XSLT (например, интеграция XSLT в Cocoon), то используйте XSLT. В противном случае, это почти всегда причиняет больше боли, чем Вы думаете. Вы будете гораздо счастливее, используя такой язык, как Python (с lxml), Ruby (с rexml) или даже PHP (с SimpleXML). Вы даже можете соединить его с библиотекой шаблонов (например, genshi, с Python), чтобы сделать работу еще проще.
Предприняв оба подхода, я уверен, что в долгосрочной перспективе вы будете счастливее, используя что-то, отличное от XSLT.
.