Таблицу стилей XSLT можно превратить в машину состояний во многом так же, как это делает регулярное выражение (некоторые библиотеки для работы с XSLT имеют опцию «компиляции», позволяющую принять решение о затратах на это в сравнении с преимуществами наличиясделано).
Когда это сделано, это может быть очень быстро.Однако природа таблицы стилей повлияет на это.Если сопоставление с шаблоном таково, что все это может быть выполнено только в прямом направлении (или может быть внутренне переписано в такое, которое может), это будет намного быстрее, чем если бы что-то требовало сделать много шагов назад в документе.
Даже самая лучшая реализация, вероятно, будет медленнее, чем лучшая реализация с прямым синтаксическим анализом XML (будь то push, как SAX или pull).Однако, так же, как и в подходе XSLT, если анализатор только для пересылки должен удерживать много состояний о ранее обнаруженных элементах, чтобы он мог реагировать на некоторые элементы способом, который ссылается на эти предыдущие элементы, это может замедлить работузначительно.В конце концов вы попадаете в точку, когда подход DOM (для полного документа или для его поддеревьев) становится сопоставимым по скорости и, вероятно, более простым (поскольку обращение к ранее встречающимся элементам - это именно то, что DOM делает проще всего).
Следовательно, какой бы подход ни был выбран, если вы видите способы переписать части, которые ссылаются «вверх» или «назад» в документе, чтобы они делали это меньше, вы получите большую выгоду.