<apply-templates /> лучшие практики - PullRequest
0 голосов
/ 11 февраля 2009

с apply-шаблонами легко написать, трудный для понимания код.

Существуют ли правила написания шаблонов применений, которые легко читать и поддерживать?

например, «избегайте использования // * в select», «попробуйте написать все apply-шаблоны в одном шаблоне» или «не используйте apply-templates, если это возможно»

что выглядит естественно, что некрасиво?

Ответы [ 4 ]

5 голосов
/ 11 февраля 2009

Извините, если вы находите шаблоны применения сложными в обслуживании - но это способ XSLT. На самом деле вы должны использовать apply-templates в пользу примера for-each. Это то, что даст вам лучшую производительность на разных процессорах XSLt. В целом, я бы постарался избежать слишком большого количества сегментов / уровней XPath в предложении select. Но здесь действительно нет практического правила.

То, что следует избегать "// *", становится очевидным, если вы понимаете другую ось. Я бы действительно посоветовал прочитать о них, если вы работаете с XSLT и XPath.

1 голос
/ 18 февраля 2009

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

В противном случае нет ничего плохого в том, чтобы разбить вашу таблицу стилей на столько логических модулей, сколько необходимо.

  • Все, что повторяется, должно быть в шаблоне (очевидно)
  • Соответствие пути должно быть сопоставимо при поиске строки. apply-templates и template match должны как минимум выглядеть одинаково. Это становится необходимым, чем больше становится ваш шаблон.
0 голосов
/ 24 февраля 2009

<xsl:apply-templates select="//abc/xyz" /> Никогда не начинайте с корня во внутренних шаблонах применения, так как это приведет к переполнению стека

0 голосов
/ 18 февраля 2009

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

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

Избегайте "для каждого". Это только заставит вас думать, что вы работаете в процедурной области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...