如何解决空字符串作为 DOCTYPE 路径有意义吗?
我在提供用于处理的 XML 文件中发现以下内容:<!DOCTYPE exchange_rates SYSTEM "">
空字符串对我没有任何意义,我在网上找不到任何关于它的讨论。如果我使用在线验证器,它们甚至都不会为此产生警告,也不会为此在引号之间放置任何垃圾,因此它们无法帮助我确定此声明是否无效。如果它是有效的,这个 XML 文件应该如何被验证?
解决方法
该 DOCTYPE 声明确实有效。要确定知道这一点,您可以查看规范...
在 Prolog 部分,您将找到 DOCTYPE 声明 (doctypedecl) 的模型:
如果你再看ExternalID:
您会看到 SYSTEM
后跟 SystemLiteral:
这表明引号可以为空。
如果它是有效的,应该如何验证这个 XML 文件?
由于 DOCTYPE 有一个空的 SYSTEM 标识符,并且没有允许您映射到 SYSTEM 标识符的 PUBLIC 标识符,因此无法以编程方式知道要验证的 DTD。
根据 DTD 验证此 XML 的唯一方法是让您知道它应该提前验证的 DTD,并且无论您使用什么来验证,都允许您指定与 DOCTYPE 声明分开的 DTD。 (例如,通过将 --dtdvalid
参数与 xmllint 结合使用。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。