您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

解析XHTML时出错:元素的内容必须包含格式正确的字符数据或标记

解析XHTML时出错:元素的内容必须包含格式正确的字符数据或标记

Facelets是基于XML的视图技术,它使用XHTML+XML生成HTML输出。XML具有五个特殊字符,XML解析器对其进行了特殊处理:

在这种情况下<,XML解析器会隐式地寻找标签名称和结束标签>。但是,在您的特定情况下,您使用的<是JavaScript运算符,而不是XML实体。这完全解释了您遇到的XML解析错误

元素的内容必须包含格式正确的字符数据或标记

本质上,您在错误的位置编写了JavaScript代码,而不是JS文件而不是JS文件,因此您应该相应地转义所有XML特殊字符。在<必须进行转义为&lt;

因此,基本上,

for (var i = 0; i < length; i++) {

必须成为

for (var i = 0; i &lt; length; i++) {

使它对XML有效。

但是,这使JavaScript代码更难以阅读和维护。如Mozilla开发人员网络出色的文档“为XHTML编写JavaScript”所述,您应该将JavaScript代码放在字符数据(CDATA)块中。因此,按照JSF的说法,它将是:

<h:outputScript>
    <![CDATA[
        // ...
    ]]>
</h:outputScript>

XML解析器将把块的内容解释为“plain vanilla”字符数据而不是XML,因此将XML特殊字符“按原样”解释。

但是,更好的方法是将JS代码放在自己的JS文件中,该文件应由<scriptsrc>或以JSF的形式包含在其中<h:outputScript>

<h:outputScript name="functions.js" target="head" />

这样,您无需担心JS代码中的XML特殊字符。

其他 2022/1/1 18:20:30 有509人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶