我是 XML 新手,目前正在学习文档类型声明。无论如何,当在 DTD 主体中声明元素时,元素名称必须与它在 XML 文档中出现的完全一样,包括任何名称空间前缀,这意味着用户不能定义自己的名称空间,但必须使用 DTD 中定义的前缀。
a) 我假设即使我们必须使用在 DTD 中定义的前缀,我们仍然可以选择这些前缀指向哪些 URI?
b) 假设我们(在 DTD 中)声明一个元素,其中 pers 是命名空间前缀,这是否意味着 XML 文档中该元素的所有出现都需要包含前缀“pers”?如果是这种情况,那么这是否意味着对于 DTD,我们不能使用默认命名空间功能?!
谢谢
编辑:
一个)
实际上,除非有特别好的理由,或者您有简单的语法要求并且不需要名称空间,否则您应该考虑改用 XML 模式。
我确实计划改用 XML Schema,但我也想学习 DTD 的基础知识。
b)
…没有命名空间 URI 的概念(也没有默认命名空间)。
如果我们在 DTD 中声明名为“xmlns”的属性:
<!ATTLIST contact xmlns CDATA #REQUIRED>
那么 XML 文档可以使用默认命名空间功能(这里的子元素<name>
在默认命名空间中):
...
<contact xmlns=”www.somewhere.com” … >
<name></name>
</contact>
...
谢谢