Tagsoup干扰输入并错误地格式化它。例如,当我们有以下标记时
<a href="www.google.com"></a>Text outside anchor
格式如下
<a href="www.google.com">Text outside anchor</a>
这是一个简单的例子,但我们也有其他问题。因此,我们通过向textarea控件添加额外属性来使tagsoup清理/格式化可选。
这是差异(https://github.com/binnyg/orbeon-forms/commit/044c29e32ce36e5b391abfc782ee44f0354bddd3)。
Textarea现在看起来像这样
<textarea skip-cleanmarkup="true" mediatype="text/html" />
两个问题
由于 BinnyG
答案 0 :(得分:0)
Erik,Alex,等人
我认为这里有两个问题:
第一个问题是标签汤的问题和发生的清理OOTB:空标签被转换为单一标签,当消费/发送到客户端浏览器时,标记被firefox等浏览器“修复”但是因为失去精确度他们做错了。
关闭此清理有助于这种情况,但仅仅这个问题并不是真正正确的答案,因为我们它带走了安全功能和格式良好的标记功能......所以可能需要进行一些调整处理至少某些空标记(除了将它们转换为无效的单例标记。)
这一切让我们想到了第二个问题,那就是我们总是希望这些功能在起作用吗?我们的用例说不。我们希望用户能够吐出他们想要的任何标记,无效或无效。我们没有将表单放在需要保护用户免受跨脚本编码的应用程序中,我们正在构建一个允许用户编辑网页的工具 - 因此我们已经关闭了清理工作。
但关闭清理批发?嗯,重要的是我们可以做到这一点,如果这是我们的用法所要求的,但我们拥有的实现是全有或全无。能够定义清理策略会很好。使该功能可插入。例如: *在系统的XML Config中,将配置名称的“映射”定义为实现给定策略的类名。在XForm Def中,作者将从地图中指定名称。
答案 1 :(得分:0)
如果TagSoup转换:
<a href="www.google.com"></a>Text outside anchor
分为:
<a href="www.google.com">Text outside anchor</a>
这不是TagSoup中的错误吗?如果是这种情况,那么我会说最好解决这个问题,而不是禁用TagSoup。但是,它不是TagSoup中的错误;这是似乎正在发生的事情。假设浏览器将以下内容发送给客户端:
<a shape="rect"></a>After<br clear="none">
这通过TagSoup,结果通过XSLT清理代码,并将以下内容发送到浏览器:
<a shape="rect"/>After<br clear="none"/>
问题出在浏览器上,将其转换为:
<a shape="rect">After</a><br clear="none"/>
问题是我们将此序列化为带有Dom4jUtils.domToString(cleanedDocument)
的XML,而将其序列化为HTML则更为谨慎。在这里,我们可以使用Saxon序列化器。它也用于HTMLSerializer
。也许您可以尝试更改此代码以使用它而不是使用Dom4jUtils.domToString()
。当有机会这样做时,你会告诉我们你发现了什么。
答案 2 :(得分:0)
我们认为最好有一种名称到策略的映射,以便RTE可以调用适合它们的服务器端处理,如果没有指定,则调用默认值。