命名空间概述
    标记中出现了同名不同义的情况,极其容易造成含义混乱。命名空间就是由W3C指定的用于解决这类问题的。

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <book xmlns:bk="http://www.dlut.edu.cn/xml/book" xmlns:au="http://www.dlut.edu.cn/xml/author">
    3. <bk:name>XML技术及应用</bk:name>
    4. <author>
    5. <au:name>唐琳</au:name>
    6. <age>34</age>
    7. </author>
    8. </book>

    命名空间的语法
    xmlns[:prefix]=”命名空间字符串”
    xmlns:是XML namespace的缩写即XML命名空间,这个字符串是固定的。
    prefix:表示前缀名称也称为命名空间别名,可以随意指定,通常是一个简短的名字。
    注:命名空间别名中不能包括冒号,因为在使用时是采用“命名空间别名:本地标记名”的方式,如果增加冒号就无法区别命名空间别名和本地标记名。命名空间别名不能使用xml和xmlns。
    xml只能用于XML1.0规范定义的xml:space和xml:lang属性,别名xml被定义与命名空间名字http://www.w3.org/XML/1998/namespace绑定。前缀xmlns仅仅用于声明名称空间的绑定,它被定义为与命名空间名字http://www.w3.org/2000/xmlns/绑定。
    命名空间声明主要包括两种形式:
    1.没有前缀限定的命名空间;

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <root xmlns="http://www.dlut.edu.cn/xml/nonamespace">
    3. <sub>abc</sub>
    4. </root>

    2.有前缀限定的命名空间;

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <dlut:root xmlns:dlut="http://www.dlut.edu.cn/xml/nonamespace">
    3. <dlut:sub>abc</dlut:sub>
    4. </dlut:root>

    命名空间作用域
    命名空间能够作用于声明该命名空间的元素及其子元素中,除非被子元素中其他同别名的命名空间所覆盖。但并不表示作用域内的元素属于该命名空间。
    元素对命名空间的使用
    虽然在元素中声明了命名空间,命名空间也可以作用于相应的元素,但是并不表示该元素位于所声明的命名空间中。如果要表示某元素位于某命名空间时,需为该元素指定命名空间。指定命名空间的语法为:
    命名空间别名:标记名
    属性对命名空间的使用
    实际应用中属性很少使用命名空间,但需要读者注意的是如果在属性上没有使用任何命名空间别名,则表示该属性不属于任何命名空间。
    注:属性的命名空间是独立的,即无论属性所属的元素属于任何命名空间与属性的命名空间无关。

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <book xmlns:au="http://www.dlut.edu.cn/xml/author" xmlns="http://www.dlut.edu.cn/xml">
    3. <name>XML技术及应用</name>
    4. <author au:id="x001" birthdate="19801001">
    5. <name>唐琳</name>
    6. <age>34</age>
    7. </author>
    8. </book>

    DTD对命名空间的支持

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE book[
    3. <!ELEMENT book(bk:name,author)>
    4. <!ELEMENT bk:name (#PCDATA)>
    5. <!ELEMENT author(au:name,age)>
    6. <!ELEMENT au:name(#PCDATA)>
    7. <!ELEMENT age(#PCDATA)>
    8. <!ATTLIST book xmlns:bk CDATA #IMPLIED
    9. xmlns:au CDATA #IMPLIED
    10. xmlns CDATA #IMPLIED>
    11. <!ATTLIST age xmln CDATA #IMPLIED>
    12. ]>
    13. <book xmlns:bk="http://www.dlut.edu.cn/xml/book" xmlns:au="http://www.dlut.edu.cn/xml/author"xmln="http://www.dlut.edu.cn/xml">
    14. <bk:name>XML技术及应用</bk:name>
    15. <author>
    16. <au:name>唐琳</au:name>
    17. <age xmln="">34</age>
    18. </author>
    19. </book>