为什么 Visualforce 页面需要无效 HTML? (有时)

Why do Visualforce pages require invalid HTML? (at times)

这在我身上发生过几次。使用诸如 <img> 标签或 <br> 之类的东西。基本上任何 HTML void 元素。就在今天,我尝试使用 <br>,保存时得到了这个:

我是不是漏掉了什么?

这有什么原因吗?

void 元素是否不适用于 visualforce 页面或组件?

或者这只是有缺陷的语法检查?

有时会非常令人沮丧,前几天我最终添加了一个错误的标签,因为我意识到它不会被呈现,而且这是保存我的页面的唯一方法...

P.S。如果这有一个易于访问的答案,我很抱歉。我认为我看起来很合理,但在发布问题之前不像往常那么多。甚至找不到让我接近相关内容的搜索词。

Visualforce 必须是有效的 XML 文档。不是 HTML(允许 <img> 不关闭),不是 XHTML(因为如果你添加任何 W3C 官方未定义的 <apex:... 标签,它就不是 html文档,至少直到它被编译并且输出变得纯粹 html0.

所以你需要<img> ... </img>或者自闭版,<img />。 在某种程度上,Lightning Web 组件更糟糕,自动关闭不起作用。必须明确 "end tag".

至于为什么...可能是为了更容易将其解析为有效文档?我怀疑他们这样做也是为了更容易生成 PDF。

这不是完全相同的主题,但足够接近,我可以在合理的时间内找到:https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_styling_doctype.htm