1

我在 .Net 项目中使用 AntiSamy。我想保留<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>

先感谢您。

4

1 回答 1

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>

css 属性 font-size 将根据 css-rules 中定义的规则进行验证。这里的正则表达式长度在通用正则表达式部分定义为

<regexp name="length"
            value="((-|\+)?0|(-|\+)?([0-9]+(\.[0-9]+)?)(em|ex|px|in|cm|mm|pt|pc))" />

common-attributes 或 tag-rules 部分没有变化。

于 2014-10-16T14:18:05.307 回答