正在解析 JSP 页面,错误通知格式错误
Parsing JSP page, an error notifies well-formedness violation
我有一个 JSP 页面。 write/display 我使用的技术如下:
- Glassfish 3(基于 Java EE 6)
- Eclipse EE 开普勒 IDE
- JDKv7
页面如下:
<?xml version="1.0" encoding="UTF-8"?>
<% @page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<h1> <center>506</center></h1>
<p/>
<h3>My fancy cat has been caught</h3>
<%
out.println("kkkkkkkkkkkkkkkkk");
%>
</body>
</html
错误发生在以下行:
<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
IDE 说:
- XML 由于解析错误,文档格式不正确
- 文档中根元素之前的标记必须格式正确
如果我将文档传递给 XML 验证器:http://www.validome.org/xml/validate/
,它会报告:
- 根元素之前的文档中的标记必须格式正确。
- 并且错误发生在
%
字符上。虽然,它说该列是第 3 列。但是,查看文档,该列似乎是第 2 列(行前没有 space)。另一个验证器根据列号报告相同的事情。
HTML/JSP 文档受到 XML 约束,但它不完全是 XML 文档,我认为这就是验证器无法识别 JSP 语法的原因.
另一件事是,下一个错误发生在以下行:
<%
out.println("kkkkkkkkkkkkkkkkk");
%>
IDE 再次抱怨,在这个字符上,%
:
- 元素的内容必须包含格式正确的字符数据或标记。
事实上,当我在 Glassfish app server
上执行页面时,它会正确显示内容。
即使我将应用程序服务器更改为 Glassfish 4
(基于 Java EE 7),也会出现相同的错误。
除此之外,如果我从模板(可在 IDE 获得)生成 JSP 页面,顶部的相同错误会再次发生。
如果我只输入 HTML 页面,则不会出现错误。由于某些原因,IDE 不接受 JSP 语法。
我需要修复它,因为只要出现这个错误,我就无法使用内容助手。这对使用页面非常有帮助。
任何想法,这个错误的原因可能是什么?
您必须从文件中删除 <?xml version="1.0" encoding="UTF-8"?>
header,或者使用 <jsp:scriptlet> ... your code ... </jsp:scriptlet>
而不是 <% ... your code ... %>
语法。
我会推荐第一个选项,因为使用 XML 语法会带来一些其他限制(例如,您必须在条件等中使用 &&
而不是 &&
)。
嗯,我想出了解决办法。我用全新安装替换了 IDE,问题就消失了。
在之前的 IDE 中唯一对我有用的是,如果你想在 JSP 页面中使用 <jsp:scriplet>
,你需要以下名称 - space在你的根上:xmlns:jsp="http://java.sun.com/JSP/Page"
.
前进...
我有一个 JSP 页面。 write/display 我使用的技术如下:
- Glassfish 3(基于 Java EE 6)
- Eclipse EE 开普勒 IDE
- JDKv7
页面如下:
<?xml version="1.0" encoding="UTF-8"?>
<% @page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<h1> <center>506</center></h1>
<p/>
<h3>My fancy cat has been caught</h3>
<%
out.println("kkkkkkkkkkkkkkkkk");
%>
</body>
</html
错误发生在以下行:
<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
IDE 说:
- XML 由于解析错误,文档格式不正确
- 文档中根元素之前的标记必须格式正确
如果我将文档传递给 XML 验证器:http://www.validome.org/xml/validate/
,它会报告:
- 根元素之前的文档中的标记必须格式正确。
- 并且错误发生在
%
字符上。虽然,它说该列是第 3 列。但是,查看文档,该列似乎是第 2 列(行前没有 space)。另一个验证器根据列号报告相同的事情。
HTML/JSP 文档受到 XML 约束,但它不完全是 XML 文档,我认为这就是验证器无法识别 JSP 语法的原因.
另一件事是,下一个错误发生在以下行:
<%
out.println("kkkkkkkkkkkkkkkkk");
%>
IDE 再次抱怨,在这个字符上,%
:
- 元素的内容必须包含格式正确的字符数据或标记。
事实上,当我在 Glassfish app server
上执行页面时,它会正确显示内容。
即使我将应用程序服务器更改为 Glassfish 4
(基于 Java EE 7),也会出现相同的错误。
除此之外,如果我从模板(可在 IDE 获得)生成 JSP 页面,顶部的相同错误会再次发生。
如果我只输入 HTML 页面,则不会出现错误。由于某些原因,IDE 不接受 JSP 语法。
我需要修复它,因为只要出现这个错误,我就无法使用内容助手。这对使用页面非常有帮助。
任何想法,这个错误的原因可能是什么?
您必须从文件中删除 <?xml version="1.0" encoding="UTF-8"?>
header,或者使用 <jsp:scriptlet> ... your code ... </jsp:scriptlet>
而不是 <% ... your code ... %>
语法。
我会推荐第一个选项,因为使用 XML 语法会带来一些其他限制(例如,您必须在条件等中使用 &&
而不是 &&
)。
嗯,我想出了解决办法。我用全新安装替换了 IDE,问题就消失了。
在之前的 IDE 中唯一对我有用的是,如果你想在 JSP 页面中使用 <jsp:scriplet>
,你需要以下名称 - space在你的根上:xmlns:jsp="http://java.sun.com/JSP/Page"
.
前进...