使用记事本++进行内部DTD验证

问题描述 投票:0回答:1

我不熟悉XML,并尝试使用DTD创建简单的XML。

我正在通过XML Tools blugin使用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”',则会收到以下错误“ ERROR:Standalone:在外部子集中声明的人包含空格节点”。如果我将其删除,则代码将得到验证,没有任何问题。

谁能阐明为什么'standalone =“ yes”'引起问题的原因?谢谢。

P.S。在将其标记为重复之前,请仔细阅读上述问题的描述。

xml validation notepad++ dtd
1个回答
0
投票

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

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

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

  • 实体(amp,lt,gt,quot,quot之外的实体,如果在文档中出现了对这些实体的引用,或者

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.