【问题标题】:Does an empty string make sense as DOCTYPE path?空字符串作为 DOCTYPE 路径有意义吗?
【发布时间】:2021-05-11 22:21:22
【问题描述】:

我在提供用于处理的 XML 文件中发现以下内容:
<!DOCTYPE exchange_rates SYSTEM "">
空字符串对我来说没有任何意义,我在网上找不到任何关于它的讨论。如果我使用在线验证器,它们甚至都不会为此产生警告,也不会在引号之间添加任何垃圾,因此它们无法帮助我确定此声明是否无效。如果有效,该 XML 文件应该如何验证?

【问题讨论】:

    标签: xml dtd doctype


    【解决方案1】:

    该 DOCTYPE 声明确实有效。要确定这一点,您可以查看规范...

    Prolog 部分,您将找到 DOCTYPE 声明的模型 (doctypedecl):

    如果你再看看ExternalID:

    您会看到SYSTEM 后面跟着SystemLiteral

    这表明引号可以为空。

    如果有效,该 XML 文件应该如何验证?

    由于 DOCTYPE 有一个空的 SYSTEM 标识符,并且没有可让您映射到 SYSTEM 标识符的 PUBLIC 标识符,因此无法以编程方式知道要验证的 DTD。

    根据 DTD 验证此 XML 的唯一方法是让您提前知道它应该针对哪个 DTD 进行验证,并且无论您使用什么来验证都允许您指定与 DOCTYPE 声明分开的 DTD。 (例如,通过使用带有 xmllint 的 --dtdvalid arg。)

    【讨论】:

    • 好的,所以如果XML没有提供DTD,如果我想验证的话我可以自己设置。
    猜你喜欢
    • 2023-03-15
    • 2023-04-04
    • 2022-12-10
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多