Reports empty tag body. The validation works in XML / JSP / JSPX / HTML/ XHT

博客可能围绕XML、JSP、JSPX、HTML、XHT中标签体为空的情况展开,但内容仅给出出处,推测会涉及这些技术中空标签体的相关问题及处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<think>好的,我现在需要解决用户提到的两个问题:一个是关于`xmlns:jsp`的命名空间报错,另一个是`dwr20.dtd` URL未注册的问题。首先,我得先理解这两个问题的具体原因。 对于`xmlns:jsp`的报错,用户可能是在XML配置文件中使用了类似`xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"`的声明,但系统无法找到对应的schema或DTD。这可能是因为这个URL已经过时或者无法访问。我记得Java EE的命名空间现在可能由Jakarta EE维护,原来的Sun/Oracle的URL可能已经失效了。需要确认正确的命名空间URL,或者是否需要引入相关的XSD文件到本地。然后是`dwr20.dtd`的问题,用户之前已经提过,之前的回答建议使用本地DTD或升级到使用XSD的DWR版本。可能用户这次的问题是在配置DWR时同时遇到了这两个问题,需要综合解决。可能需要检查DWR配置文件中的DOCTYPE声明是否正确,以及是否处理了JSP命名空间的引用。接下来,我需要分步骤解决这两个问题。对于`xmlns:jsp`报错,可能需要更新命名空间的URL到正确的地址,或者配置实体解析器来本地解析。例如,Jakarta EE的命名空间可能使用新的URL,或者用户需要将XSD文件下载到本地项目中,然后在XML中引用本地路径,同时设置解析器从classpath加载。对于`dwr20.dtd`的问题,之前的解决方案仍然适用,即下载DTD文件到本地,修改DOCTYPE声明指向本地路径,并配置解析器使用本地文件。或者升级到DWR3.x版本,使用XSD代替DTD,这样可以避免DTD的问题。 用户可能同时使用DWR和JSP标签库,因此需要确保两者的命名空间都正确配置。可能需要检查XML文件的头部声明,确保所有命名空间的URL都是有效且可访问的,或者已被正确映射到本地资源。 另外,可能需要考虑XML解析器的配置,比如在Spring或应用服务器中设置EntityResolver,以处理这些外部资源的引用。例如,使用Spring的`ResourceEntityResolver`来从classpath中加载这些DTD或XSD文件。还需要验证用户是否在配置文件中正确混合了不同的命名空间,比如是否在DWR的配置文件中错误地引入了JSP的命名空间,导致解析错误。需要检查XML文件的结构,确保每个命名空间的使用都是正确且必要的。 最后,可能需要提供具体的配置示例,比如如何修改DWR的配置文件,如何引入本地的DTD和XSD,以及如何设置解析器。同时,提醒用户在升级DWR版本时注意兼容性问题,并测试配置更改后的应用是否正常运行。</think>### 解决`xmlns:jsp`命名空间与`dwr20.dtd`未注册问题 --- #### 一、`xmlns:jsp`命名空间报错分析 当XML配置文件中包含以下声明时: ```xml <beans xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"> ``` 若报错`无法定位命名空间http://java.sun.com/xml/ns/javaee/jsp`,原因可能是: 1. **过时命名空间URL** Java EE规范已迁移至Jakarta EE,原Sun/Oracle的命名空间URL失效[^1]。 2. **缺少本地Schema文件** 未配置XSD文件本地映射,导致XML解析器无法验证。 --- #### 二、综合解决方案 ##### 1. 更新命名空间声明 **针对JSP命名空间**: - 使用Jakarta EE的新URL: ```xml xmlns:jsp="https://jakarta.ee/xml/ns/jakartaee/jsp" ``` - 或直接引用本地XSD文件(需下载`web-jsptaglibrary_3_1.xsd`): ```xml xmlns:jsp="classpath:/schemas/jakartaee/web-jsptaglibrary_3_1.xsd" ``` **针对DWR命名空间**: - 升级到DWR 3.x并改用XSD: ```xml xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xsi:schemaLocation="http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd" ``` ##### 2. 配置本地DTD/XSD解析 **步骤**: 1. 下载资源文件: - `dwr20.dtd` → `src/main/resources/dtd/dwr20.dtd` - `web-jsptaglibrary_3_1.xsd` → `src/main/resources/schemas/jakartaee/web-jsptaglibrary_3_1.xsd` 2. 配置XML解析器实体解析: ```java SAXReader reader = new SAXReader(); reader.setEntityResolver((publicId, systemId) -> { if (systemId.contains("dwr20.dtd")) { return new InputSource(getClass().getResourceAsStream("/dtd/dwr20.dtd")); } else if (systemId.contains("web-jsptaglibrary")) { return new InputSource(getClass().getResourceAsStream("/schemas/jakartaee/web-jsptaglibrary_3_1.xsd")); } return null; }); ``` ##### 3. 完整配置示例 ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jsp="https://jakarta.ee/xml/ns/jakartaee/jsp" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xsi:schemaLocation=" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"> <dwr:configuration> <dwr:init/> </dwr:configuration> </beans> ``` --- #### 三、验证方法 1. **IDE静态检查** 在IntelliJ/Eclipse中打开XML文件,应无红色错误提示。 2. **启动时日志监控** 检查应用启动日志中是否包含`XML validation skipped`或`Successfully loaded DTD/XSD`类信息。 3. **网络请求拦截** 使用Wireshark过滤`http://java.sun.com`和`dwr20.dtd`的请求,确认无404响应。 --- #### 四、关联配置参数 | 配置项 | 作用 | 示例值 | |--------|------|--------| | `xmlns:jsp` | JSP标签库命名空间 | `https://jakarta.ee/xml/ns/jakartaee/jsp` | | `EntityResolver` | 自定义实体解析策略 | 如上述Java代码示例 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值