java大于号实体引用,实体名称必须紧跟在实体引用中的“&”之后

到目前为止发布的所有答案都给出了正确的解决scheme,但没有人能够正确解释具体问题的根本原因。

Facelets是一种基于XML的视图技术,它使用XHTML + XML来生成HTML输出。 XML有五个特殊字符,它们由XMLparsing器进行特殊处理:

标签的开始

>标签的结尾。

"一个属性值的开始和结束。

'属性值的替代开始和结束。

&实体的开始(以;结尾)。

如果&没有跟在# (例如   等等),XMLparsing器隐式地查找五个预定义的实体名称 lt , gt , amp , quot和apos或任何手动定义的实体名称 。 但是,在您的具体情况下,您使用&作为JavaScript运算符,而不是XML实体。 这完全解释了你得到的XMLparsing错误:

实体名称必须紧跟在实体引用中的“&”之后

实质上,您是在错误的地方编写JavaScript代码,而不是JS文件的XML文档,所以您应该相应地转义所有的XML特殊字符。 &必须以& 。

所以,在你的具体情况下,

if (Modernizr.canvas && Modernizr.localstorage &&

必须成为

if (Modernizr.canvas && Modernizr.localstorage &&

使其成为XML有效。

但是,这使JavaScript代码难以阅读和维护。 正如Mozilla开发者networking的优秀文档“为JavaScript编写XHTML”所述 ,您应该将JavaScript代码放在字符数据(CDATA)块中。 因此,在JSF中,这将是:

XMLparsing器会将块的内容解释为“普通香草”字符数据,而不是XML,因此将“原样”解释为XML特殊字符。

但是,更好的办法就是把JS代码放在你自己的JS文件中,这个JS文件包含在

(注意target="body" ;通过这种方式,JSF将自动将

这样你就不用担心你的JS代码中的XML特殊字符。 作为额外的好处,这使您有机会让浏览器cachingJS文件,以使总体响应规模更小。

也可以看看:

错误分析/page.xhtml:跟踪错误[line:42]实体“nbsp”被引用,但未声明

是否有可能使用JSF + Facelets与HTML 4/5?

如何在Facelets模板中引用CSS / JS / image资源?

为XHTML编写JavaScript

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值