问题的出现:
XML
的元素名字是不固定的,当两个不同的文档使用同样的名称描述两个不同类型的元素的时候,或者一个同样的标记表示两个不同含义的内容的时候,就会发生命名冲突。
问题的解决:命名空间(
Namespace
),对于每一套特定应用的
DTD
,给它一个独一无二的标志来代表,如果在
XML
中使用
DTD
中定义的元素,需将
DTD
的标志和元素名,属性连在一起使用,相当于指明了元素来自什么地方,这样就不会同其他同名元素混淆了(有点类似
Java
中包的作用,给它取个全名)。在
XML
中,采用现成的,在全球范围唯一的“域名”作为
Namespace
,即
URL
作为
XML
的
Namespace
。
命名空间允许我们在一个文档中结合不同的元素和属性定义,并指明这些元素和属性的定义来自那里。
命名空间的语法如下:
xmlns:[prefix]=”[url of name]”
其中“
xmlns:
”是必须的属性。“
prefix
”是命名空间的别名,它的值不能为
xml
。
<sample xmlns:ins=”http://www.lsmx.net.ac”>
<ins:batch-list>
<ins:batch>Evening Batch</ins:batch>
</ins:batch-list>
</sample>
值得注意的是
batch-list,batch
等标记必须在
"
http://www.lsmx.net.ac
"
中定义,别名为
ins
。注意在使用前必须先声明命名空间,在使用时别忘了“
:
”。
一,默认
Namespace xmlns=”[url of namespace]”
二,指定了父元素的命名空间,子元素希望用自己的命名空间,可以在子元素中指定命名空间的别名。
三,属性也可以有自己的命名空间。
前面知识复习:
结构完整的
XML
文档是指符合
XML
规则的文档。合法的
XML
文档,不但要求结构完整,而且要求符合
DTD
验证。
DTD
用来规定
XML
文档的语法结构,使得解析器能够理解
XML
文档的内容。
SYSTEM
关键字代表
DTD
文件是一个外部文件,也就是解析器会根据
SYSTEM
后面的说明到外部去寻找这个
DTD
文件。
如果一个元素的
CONTENT
(元素类型)被声明为
EMPTY
的话,表示该元素不能包含任何子元素和文本。
ANY
表示该元素其中可以包含任何本身有效的元素内容,也就是说,它能够包含在
DTD
其他位置已经声明过的元素。
PCDATA
表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素。