Атрибут стиля AntiSamy в.NET
Я использую AntiSamy в.Net проекте. Я хотел бы оставить атрибуты стиля для <span>
метки, неповрежденные. Я пытался изменить политику, но все, что я делаю, я получаю тот же результат... Из этого:
<p><span style="font-size:10px"><span style="font-family:arial">Name here<br />
К этому:
<p><span style=""><span style="">Name here<br />
После просмотра файла политики я увидел этот комментарий там:
<!-- the "style" attribute will be validated by an inline stylesheet scanner, so no need to define anything here - i hate having to special case this but no other choice -->
Здесь у меня есть несколько вопросов...
Что означает эта закомментированная строка в XML-файле политики?
Должен ли я внести изменения для атрибута стиля в <common-attributes>
или это не касается атрибутов стиля в <span>
теги?
Нужно ли вносить изменения только в <tag name="span" action="validate"/>
под <tag-rules>
для содержимого атрибута стиля быть неповрежденным?
Заранее спасибо.
1 ответ
Атрибут "style" является особым случаем в AntiSamy (так как значение атрибута style состоит из списка пар свойство-значение).
style="font-size:10px; color:red;"
Значение атрибута style сканируется специальным сканером и встроенным сканером таблиц стилей. Эта проверка не является тривиальной, как для других атрибутов тега, так как каждое свойство в "стиле" само должно следовать некоторым правилам. Для этих правил должен быть определен раздел. Например,
<css-rules>
<property name="font-size" >
<category-list>
<category value="visual" />
</category-list>
<literal-list>
<literal value="inherit" />
</literal-list>
<regexp-list>
<regexp name="length" />
</regexp-list>
</property>
</css-rules>
Свойство font-size свойства css будет проверено на соответствие правилам, определенным в css-rules. Здесь длина регулярного выражения определяется в разделе общих регулярных выражений как
<regexp name="length"
value="((-|\+)?0|(-|\+)?([0-9]+(\.[0-9]+)?)(em|ex|px|in|cm|mm|pt|pc))" />
В разделе общих атрибутов или правил тегов нет изменений.