Эммм. Я тут опять со своим XSL
Если абстрактно, то пример с раскрашиванием отрицательных чисел звучит так - какие-то значения имеют один отличительный признак, в зависимости от этого признака они должны отображаться по разному. Итого, имеем ОДИН признак и ДВА способа отображения.
Задача кода, в этом случае, выделить значения по определённому признаку и сообщить об этом шаблону. Задача шаблона - применить один из способов отображения. Для указания способа, которым нужно отобразить, используется какой нибудь абстрактный атрибут принимающий два значения. Заметьте, всё решено на абстрактном уровне и максимально разделено, и может быть применено для многих случаев.
Если от абстрактности к конкретике, то:
В коде логика по определению отрицательное число или положительное, в зависимости от ... проставляется какой нибудь абстрактный атрибут (дело имеем с ХМЛ).
В шаблоне для каждого абстрактного атрибута есть свой xsl:template.
Итого: если завтра нужно будет отобразить не красным а другим, в шаблоне правится xsl:template, если нужно дополнительно выделить разметкой, опять же правим xsl:template, CSS тоже можно править как угодно, это не скажется на коде.
Однако, если завтра появится ещё один отличительный признак, т.е. их будет уже ДВА, а способов отображения, соответственно ТРИ, то не избежать доработки как кода, так и шаблона. В коде нужно будет добавить ещё одно условие, а в шаблоне нужно будет дописать ещё один xsl:template.
Таким образом поучили - мухи отдельно, котлеты отдельно
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)