XML认识
XML概念
XML是eXtensible Markup Langguage 缩写,称之为可扩展标记语言。XML 被设计用来传输和存储数据。与HTML不同的是:
HTML被设计用来显示数据,其焦点是数据的外观。
- XML被设计用来描述数据,其焦点是数据的内容。
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
XML的用途
XML 简化数据共享
XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。
XML 简化数据传输
通过 XML,可以在不兼容的系统之间轻松地交换数据。
XML 简化平台的变更
XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。
XML文档结构
XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
<?xml version="1.0" encoding="UTF-8"?> <root> <child> <subchild>.....</subchild> </child> </root>
1.XML申明
<?xml version="1.0" encoding="ISO-8859-1"?>
申明必须在第一行,在其前面不能有空白、其他的处理指令或注释。
- 申明版本属性:目前该属性的值通常为1.0
- 声明编码属性:默认值UTF-8
2.根标记
XML文档中有且仅有一个根标记,其他标记都必须封装在根标记中。
3.树形结构
XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素,父、子以及同胞等术语用于描述元素之间的关系。
父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有元素均可拥有文本内容和属性(类似 HTML 中)。
XML的语法
- 所有 XML 元素都须有关闭标签
- XML 标记对大小写敏感
- XML 标记命名必须以下划线或字母开头,"<"和标记名字 之间不要有空格。
- XML 必须正确地嵌套,形如:<b><i>This text is bold and italic</i></b>
- XML 文档必须有根标记
- XML 的属性值须加引号
- 在 XML 中,空格会被保留
- XML 中的注释:<!-- This is a comment -->
- 实体引用,在XML中的特殊字符应当用引用实体:
< |
< |
> |
> |
& |
& |
' |
' |
" |
" |
XML标记
标记由左尖括号(<)和右尖括号(>)以及之间的文本组成。有开始标记(例如 <name>)和结束标记(例如 </name>)。
XML 标记命名必须以下划线或字母,"<"和标记名字之间不要有空格。
XML 标记对大小写敏感
1.空标记
空标记以"<"标识开始,"/>"结束。可以有属性。
<chair width="24" height="12" />
2.非空标记
非空标记必须由“开始标记”和“结束标记”组成,成对出现。
开始标记"<"标识开始,">"结束。可以有属性。
结束标记以"</"开始,">"结束。不能有属性。
<T28> <开车时间>20点58分</开车时间> <终到时间>08点18分</终到时间> </T28>
3.CDATA段
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。
CDATA段用"<![CDATA["开始,"]]>"结束。之间可以包含任意字符。但CDATA段不能嵌套。
<script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1; } else { return 0; } } ]]> </script>
在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。
XML元素
元素是开始标记、结束标记以及位于二者之间的所有内容。元素的名字和属性就是该元素内最外层标记的名字和属性。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
<bookstore> <book category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> </book> </bookstore>
在上例中,<bookstore> 和 <book> 都拥有元素内容,因为它们包含了其他元素。<author> 只有文本内容,因为它仅包含文本。
在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")。
XML命名空间
XML 命名空间提供避免元素命名冲突的方法。
命名冲突
假如这两个 XML 文档被一起使用,由于两个文档包含带有不同内容和定义的相同名字的元素,就会发生命名冲突。 XML 解析器无法确定如何处理这类冲突。
使用前缀来避免命名冲突
<h:table> <h:tr> <h:td>Apples</h:td> </h:tr> </h:table>
使用命名空间(Namespaces)
<f:table xmlns:f="http://www.XXX.com.cn/furniture"> <f:name>African Coffee Table</f:name> <f:width>80</f:width> </f:table>
XML Namespace (xmlns) 属性
XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
默认的命名空间(Default Namespaces)
为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
请使用下面的语法:xmlns="namespaceURI"
<table xmlns="http://www.w3.org/TR/html4/"> <tr> <td>Apples</td> </tr> </table>