【发布时间】:2013-11-05 10:39:27
【问题描述】:
我尝试了使用不同于根元素名称的名称的内部和外部 DTD,它仍然有效!
关于下面标签中“名称”的值-
<DOCTYPE Name SYSTEM "Couple.dtd">
那么这个“名字”有什么用呢?
1) 内部 DTD
<!DOCTYPE SampleDocType[
<!ELEMENT Neighbours (Couple, Couple) >
<!ELEMENT Couple (Name, Name) >
<!ELEMENT Name ( Vorname, Nachname, Geschlecht) >
<!ELEMENT Vorname (#PCDATA) >
<!ELEMENT Nachname (#PCDATA) >
<!ELEMENT Geschlecht (#PCDATA) >
]>
<Couple>
<Name>
<Vorname>Marie</Vorname>
<Nachname>Müller</Nachname>
<Geschlecht>=</Geschlecht>
</Name>
<Name>
<Vorname>Klaus</Vorname>
<Nachname>Müller</Nachname>
<Geschlecht>♂</Geschlecht>
</Name>
</Couple>
2)外部DTD
<!DOCTYPE SampleDocType SYSTEM "Couple.dtd" >
<Couple>
<Name>
<Vorname>Marie</Vorname>
<Nachname>Müller</Nachname>
<Geschlecht>=</Geschlecht>
</Name>
<Name>
<Vorname>Klaus</Vorname>
<Nachname>Müller</Nachname>
<Geschlecht>♂</Geschlecht>
</Name>
</Couple>
外部 DTD 文件
<!ELEMENT Neighbours ( Couple, Couple) >
<!ELEMENT Couple (Name, Name) >
<!ELEMENT Name ( Vorname, Nachname, Geschlecht) >
<!ELEMENT Vorname (#PCDATA) >
<!ELEMENT Nachname (#PCDATA) >
<!ELEMENT Geschlecht (#PCDATA) >
注意 - 我在 Notepad++ 中使用 XMLtools 插件进行验证。
【问题讨论】:
-
这里的“它仍然有效”是什么意思?
-
它说 DOCTYPE“名称”必须匹配根元素名称,我没有遵循。但我的文档仍然通过了验证。
-
不强制执行有效性约束“根元素类型”(下面由 Daniel Haley 引用)的验证器不是符合标准的 XML 验证器。当然,这并不能回答您的问题(文档类型声明中的名称有什么用?)。