调用外部DTD后XML实体未定义问题求助
问题:XML引用外部DTD实体后,Sublime Text提示实体未定义
我尝试在XML文件中调用外部DTD,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <?xml-model href="https://digi.ub.uni-heidelberg.de/schema/tei/heiEDITIONS/tei_hes.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <?xml-model href="https://digi.ub.uni-heidelberg.de/schema/tei/heiEDITIONS/tei_hes.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?> <!DOCTYPE TEI [ <!ENTITY % heiEDITIONS_entities SYSTEM "https://digi.ub.uni-heidelberg.de/schema/tei/heiEDITIONS/declarations/heieditions-entities.txt"> %heiEDITIONS_entities; ]>
所有DTD实体均可在ENTITY声明的地址中找到,但在XML文件中使用&bar;、ï等实体时,Sublime Text提示实体未定义。
解决思路及办法
核心原因
Sublime Text内置的XML检查功能默认不会主动加载网络上的外部DTD实体文件,哪怕你能正常访问该地址,编辑器也无法读取并识别其中的实体定义。
具体解决步骤
本地引用实体文件
把heieditions-entities.txt下载到你的项目本地目录,修改XML里的ENTITY声明为本地路径,比如:<!ENTITY % heiEDITIONS_entities SYSTEM "./heieditions-entities.txt">这样编辑器能直接读取本地文件,识别其中的实体。
安装XML增强插件
安装Sublime的XML Tools插件,它对外部DTD的支持更完善,能处理网络或本地的实体文件。安装完成后重启编辑器,再检查实体是否正常识别。验证实体文件内容
确认下载的实体文件里确实包含&bar;、ï这些实体的定义,避免文件本身缺失对应条目。
内容的提问来源于stack exchange,提问作者Semis
相关产品推荐
相关产品推荐

