XML与DTD校验提示未找到DTD及Entity 'iacute' 'aacute'未定义如何解决
XML DTD校验报错排查解决方法
- 先修复XML显性语法错误
你提供的XML代码中第一个<url>块里的<news:publication_date>节点闭合标签缺失左尖括号和命名空间前缀,现有代码为May 24, 2021publication_date>,修正为:<news:publication_date>May 24, 2021</news:publication_date> - 解决「Validation failed: no DTD found!」报错
该错误是因为你开启了DTD校验但XML未关联对应的DTD文件,两种处理方案:- 若需要保留DTD校验,在XML声明之后、
<urlset>标签之前补充对应sitemap的DTD声明,或者自定义内部DTD子集 - 若不需要强制DTD校验,可切换为当前sitemap通用的XSD Schema校验,不需要额外添加DTD声明,更符合标准规范
- 若需要保留DTD校验,在XML声明之后、
- 解决「iacute、aacute实体未定义」报错
这两个属于HTML中的西语重音字符实体,XML默认仅预定义了<、>、&、"、'五个实体,其余实体默认不识别,两种解决方法:- 直接使用原生UTF-8字符代替实体:把
í替换为í、á替换为á即可,你的XML已声明UTF-8编码,原生支持这些特殊字符 - 若必须保留实体写法,在你补充的DTD内部子集里添加实体定义即可,示例:
<!DOCTYPE urlset [ <!ENTITY iacute "í"> <!ENTITY aacute "á"> <!-- 有其他自定义实体按相同格式补充即可 --> ]> - 直接使用原生UTF-8字符代替实体:把
内容的提问来源于stack exchange,提问作者deyvid prueba
相关产品推荐
相关产品推荐

