1

我正在将 Agavi 与 Doctrine 一起使用。主模板有时无法加载,并AgaviParseException列出所有 . 我正在使用所有技术的最新稳定版本。

4

3 回答 3

0

用于 非破坏空间。您可能需要XHTML在您的模板中有效。请参阅图表以供参考。

于 2010-07-24T13:40:21.490 回答
0

虽然我对您使用的工具不太熟悉,但在我看来, 找不到 XML 实体。您可以包含 XML 实体,也可以使用它 。原因是:只有五个预定义的 XML 实体,所有其他的都需要在执行 XML 或 XHTML 时包括(而浏览器通常更宽松)。

它们是 XHTML 以下内容的一部分:

PUBLIC 
   "-//W3C//ENTITIES Latin 1 for XHTML//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"

并在 XML 解析器解析时标记以下关于 XHTML 的引用:

如果文档由不读取或无法读取外部实体的 XML 解析器读取,则只有五个内置 XML 字符实体(见上文)可以安全地使用,但如果在内部声明了其他实体,则可以使用它们DTD 子集。

但是,如果上面的错字是故意的,也可能意味着您错过;&nbsp.

于 2010-07-24T13:44:18.533 回答
0

我不知道确切的问题是什么(在提出此类问题时,请始终发布异常消息和其他有用的信息),但实际上只有一种方法可以解决此问题。

不是主模板加载失败,而是表单处理系统无法在更快、更简单的 XML 中解析完整生成的输出(因此它可以为您重新填写表单,或插入验证中的错误消息)解析模式。在 XML 解析模式(通常用于 XHTML)中,默认情况下它不会针对 DTD 进行验证,因此它只知道标准 XML 实体(&"'<>)。HTML解析模式没有这个问题。您可以强制 Agavi 使用它,但它会自动检测 HTML 或 XHTML 的使用并选择正确的模式,所以这可能不是一个好主意,特别是因为 libxml 的 HTML 解析有时可能有点不稳定(使用了 libxml通过 PHP 的 DOM 实现;解析和处理表单中的大多数限制或错误都应归功于 libxml - 如果您想了解处理不同版本 libxml 的解决方法,请查看 AgaviFormPopulationFilter.class.php以及它们的行为,例如在保存时插入双 XML 序言、破坏 CDATA 部分或其他奇怪的东西)。

无论如何,我假设您在文档中使用 UTF-8,因此实际上不需要对“©”或“«”之类的字符使用任何实体 - 您可以按字面意思插入它们而不是使用©等等。当然唯一的例外是不间断空格,在编辑器中很难看到和区分,但正如其他评论中指出的那样,您可以在 此处使用数字等价物。

于 2010-07-27T00:14:22.667 回答