XML命名空间NameSpase

XML系列:命名空间   一,什么是命名空间?  命名空间是唯一标识XML文档中的元素和实体的信息集合,通过特定URL关联XML,解决命名冲突。  DTD不支持命名空间的所有功能。但XML Schema支持。   二,命名空间的使用

 1,声明和使用命名空间:将前缀和URL关联,使用xmls属性定义命名空间别名。   语法:   xmls:前缀名 = “命名空间的URL”      名字空间的前缀名可以是不包含冒号的任何合法XML名称。   把同一命名空间的URL关联到不同前缀是毫无意义的事情~!   解析器并不解析URL真正的内容,比方http://type.com和http://www.type.com指向同一页面,解析器不会做检查!      (1),在根元素中声明命名空间       例子:   <?xml version = "1.0" encoding = "gb2321"?>   <student xmls = "http://www.type.com"     xmls:i = "http://www.Info.com"      xmls:g = "http://www.grade.com">    <i:info >     <i:name>张三</i:name>     <i:sex>男</i:sex>    </i:info>    <g:grade>     <g:chinese>88</g:chinese>     <g:math>90</g:math>    </grade>   </student>   (2),在元素中声明命名空间   <?xml version = "1.0" encoding = "gb2321"?>   <type:student xmls:type = "http://www.type.com">    <i:info xmls:i = "http://www.Info.com">     <i:name>张三</i:name>     <i:sex>男</i:sex>    </i:info>    <g:grade xmls:g = "http://www.grade.com">     <g:chinese>88</g:chinese>     <g:math>90</g:math>    </grade>   </type:student>     2,属性和命名空间   (1),属性是属于特定的元素,除非加前缀,否则属性属于他们的元素的命名空间。       (2),一个元素不可以具有相同名称的属性,但可以包含2个名称相同但属于不同命名空间的属性。   例子:   <?xml version = "1.0" encoding = "gb2321"?>   <student xmls = "http://type.com"     xmls:i = "http://Info.com"      xmls:g = "http:grade.com">    <i:info id = 1001,  g:id = 2001>     <i:name>张三</i:name>     <i:sex>男</i:sex>    </i:info>    <g:grade id=2001>     <g:chinese>88</g:chinese>     <g:math>90</g:math>    </grade>     </student>     3,默认命名空间   可以为元素和其子元素指定一个默认的命名空间,使用没有前缀的xmls属性将默认空间附加给元素和子元素。  则默认元素及其子元素在默认空间中。   属性不在默认命名空间中,必须明确添加前缀。即使拥有属性的元素在某个命名空间中,没有前缀的属性也不在该命名空间中。   例子:假设type元素定义在http://type.com中,      student元素定义在http://student.com中      teacher元素定义在http://teacher.com中。   使用默认命名空间   <?xml version = "1.0" encoding = "gb2321"?>   <type xmls ="www.type.com">    <student xmls = "http://student.com">     <info>      <name>张三</name>      <sex>男</sex>     </info>     <grade>      <chinese>88</chinese>      <math>90</math>     </grade>      </student>    <teacher xmls = "http://teacher.com">      <name>李四</name>      <sex>男</sex>    </teacher>   </type>   不使用默认命名空间   <?xml version = "1.0" encoding = "gb2321"?>   <ty:type xmls:ty ="www.type.com"    xmls:s= "http://student.com"    xmls:t = "http://teacher.com">    <s:student >     <s:info>      <s:name>张三</s:name>      <s:sex>男</s:sex>     </s:info>     <s:grade>      <s:chinese>88</s:chinese>      <s:math>90</s:math>     </s:grade>      </s:student>    <t:teacher>      <t:name>李四</t:name>      <t:sex>男</t:sex>    </t:teacher>   </ty:type>      例子:假设student元素和teacher元素定义在http://type.com中。   <?xml version = "1.0" encoding = "gb2321"?>   <type xmls ="www.type.com">    <student>     <info>      <name>张三</name>      <sex>男</sex>     </info>     <grade>      <chinese>88</chinese>      <math>90</math>     </grade>      </student>    <teacher>      <name>李四</name>      <sex>男</sex>    </teacher>   </type>        例子:假设student元素定义在http://type.com中,而teacher元素在http://www.teacher.com中定义。   <?xml version = "1.0" encoding = "gb2321"?>   <type xmls ="www.type.com"    xmls:t="http://www.teacher.com">    <student>     <info>      <name>张三</name>      <sex>男</sex>     </info>     <grade>      <chinese>88</chinese>      <math>90</math>     </grade>      </student>    <t:teacher>      <t:name>李四</t:name>      <t:sex>男</t:sex>    </t:teacher>   </type>   或   <?xml version = "1.0" encoding = "gb2321"?>   <type xmls ="www.type.com">    <student>     <info>      <name>张三</name>      <sex>男</sex>     </info>     <grade>      <chinese>88</chinese>      <math>90</math>     </grade>      </student>    <teacher xmls ="http://www.teacher.com">      <name>李四</name>      <sex>男</sex>    </teacher>   </type>   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章