0

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" />

两个问题

  1. 这是正确的方法吗?
  2. 如果我提供一个补丁,它可以使它成为 orbeon 代码库吗?

谢谢宾尼格

4

3 回答 3

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"/>

问题是我们用 将其序列化为 XML Dom4jUtils.domToString(cleanedDocument),而将其序列化为 HTML 会更谨慎。这里我们可以使用 Saxon 序列化器。它也用于HTMLSerializer. 也许您可以尝试更改此代码以使用它而不是使用Dom4jUtils.domToString(). 当您有机会这样做时,您会告诉我们您的发现。

于 2010-12-31T00:17:48.080 回答
0

Binesh 和我同意,如果有错误,最好在更接近根源的地方解决问题。但我认为他的具体问题只是问题的一部分。

我们认为最好有某种名称到策略的映射,以便 RTE 可以调用适合他们的服务器端处理,或者如果未指定,则调用默认值。

于 2011-01-03T16:39:13.420 回答
0

埃里克、亚历克斯等人

我认为这里有两个问题:

第一个问题是标签汤的问题和发生 OOTB 的清理:空标签被转换为单例标签,当使用/发送到客户端浏览器作为标记时,Firefox 等浏览器会“修复”这些标签,但由于精度损失他们做错事。

在这种情况下,关闭此清理会有所帮助,但仅就这个问题而言并不是真正的正确答案,因为我们它带走了一个安全功能和一个格式良好的标记功能......所以可能需要对处理至少某些空标签(除了将它们变成无效的单例标签。)

所有这一切都让我们想到了第二个问题,即我们是否总是希望这些功能发挥作用?我们的用例说不。我们希望用户能够吐出他们想要的任何标记,无论是否无效。我们没有将表单放入需要保护用户免受跨脚本编码的应用程序中,我们正在构建一个允许用户编辑网页的工具——因此我们关闭了清理功能。

但是关闭清理批发?好吧,如果这是我们的用例所要求的,那么我们可以做到这一点很重要,但我们所拥有的实现是全有或全无。能够定义清理策略会很好。使该功能可插入。例如: * 在系统的 XML 配置中定义配置名称到实现给定策略的类名称的“映射”。在 XForm Def 中,作者将从地图中指定名称。

于 2010-12-30T05:59:26.083 回答