我使用bleach
,它使用html5lib
来清理用户生成的内容,这些内容是设计为dust.js
模板的HTML片段
一切都很好,除了这种情况-
输入:
<table>
{#loop}
<tr>
<td>{name}</td>
</tr>
{/loop}
</table>
输出:
^{pr2}$循环标记在表外排序。这很有意义——html5lib正在更正我的html;内容不应该在表结构中,除非它被包装在td/th标记中。我通常希望这样的更正发生,而且仍然希望进行更正--但我想知道是否有办法以某种方式使这些标记通过。在
过去有没有人遇到过类似的情况,并且能够抑制这种卫生处理行为?在
到目前为止,我想到的唯一方法是将控件包装在一个可以正则表达式的标记中:
<table>
<tr data-layout=""><td>{#loop}</td></tr>
<tr>
<td>{name}</td>
</tr>
<tr data-layout=""><td>{/loop}</td></tr>
</table>
这种方法的问题是,一旦我正则化了这个格式化黑客,我就不能轻松地重新构建它。编码模板不可编辑。在
漂白剂内置白名单标签/属性。但是,您可以扩展或覆盖现有的白名单标记/属性。下面是一个如何将自定义标记添加到现有“白名单”中的示例
简单的漂白将标记“{loop}{/loop}”标签可以安全地逃逸。在
**bleatofficial documentation提供了如何定义通配符白名单标记/属性的详细信息。在
这与卫生处理完全无关,这是关于解析(根据规范!)。Foster parenting是HTML解析器直接处理表元素中大多数内容的方式;要改变这一点,您必须在
html5parser.py
中更改解析器。html5lib的目标是实现一个一致的HTML解析器-它没有API使它不符合要求。在相关问题 更多 >
编程相关推荐