【问题标题】:Internal DTD validation using Notepad++使用 Notepad++ 进行内部 DTD 验证
【发布时间】:2020-03-18 15:10:37
【问题描述】:

我是 XML 新手,正在尝试使用 DTD 创建一个简单的 XML。

我正在通过 XML Tools 插件使用 Notepad++ 进行验证。

这是我的带有内部 DTD 的 XML 代码。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE People [
    <!ELEMENT People (name, phone*)>
    <!ELEMENT name (#PCDATA)*>
    <!ELEMENT phone (#PCDATA)*>   
    <!ATTLIST phone type (home) #REQUIRED>
]>

<People>
    <name> John Smith </name>
    <phone type="home">+1 (123) 456-7890 </phone>
</People>

如果我保留 'standalone="yes"',我会收到以下错误“错误:独立:在外部子集中声明的人员包含空白节点”。如果我删除它,代码将通过验证,没有任何问题。

谁能解释一下为什么“standalone="yes"' 的存在会导致问题? 谢谢。

附:请在标记为重复之前仔细阅读上述问题的描述。

【问题讨论】:

    标签: xml validation notepad++ dtd


    【解决方案1】:

    有效性约束:独立文档声明

    独立文档声明必须具有值“no”(如果有) 外部标记声明包含以下声明:

    • 具有默认值的属性,如果这些属性应用到的元素出现在文档中没有指定 这些属性的值,或

    • 实体(amp、lt、gt、apos、quot 除外),如果对这些实体的引用出现在文档中,或

    • 具有标记化类型的属性,其中该属性出现在文档中的值使得规范化将产生一个
      与不存在的情况下产生的价值不同
      声明,或

    • 带有元素内容的元素类型,如果空白直接出现在这些类型的任何实例中。

    参考Extensible Markup Language (XML) 1.0 (Fifth Edition)

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 2015-12-24
      • 2014-08-28
      • 2016-04-01
      • 2011-09-18
      相关资源
      最近更新 更多