XML介绍

发表于:2012-08-14来源:博客园作者:Jack_wangds点击数: 标签:xml
1.1 简介XML的一个强大之处在于它的强大可扩展性。XML没有定义自己的标签,你可以创建你自己的标签,形成你自己的词汇表。XML关注的是内容,而不是表现,你创建的标签主要用来阻止数据而不是表现数据。

1.1 简介

XML的一个强大之处在于它的强大可扩展性。XML没有定义自己的标签,你可以创建你自己的标签,形成你自己的词汇表。XML关注的是内容,而不是表现,你创建的标签主要用来阻止数据而不是表现数据。
(a).
<H1>ASP.NET XML 系列</H1>
<p>Author: Jack Wang</p>
(b).
<articles>
<title>Asp.net xml系列</title>
<author>Jack Wang</author>
</articles>
很明显第二种更容易为人类理解

1.2 基本术语:

格式良好
如果文档符合由XML规范定义的格式良好的规定,那么该文档就被认为是格式良好的,规定如下:
文档包含一个或多个元素
文档只有一个根元素(也就是文档元素)
元素的结束标签名称与开始标签的名称一致
在一个元素中属性只能出现一次
属性值不能包含左尖括号(<)
由开始和结束标签界定的元素必须互相正确地嵌套

有效性

有效之前,必须是格式良好的,为了达到有效,XML文档必须经过验证。可以通过DTD(Document Type Definition)或者XML模式(XML Schema Definition)来对文档进行验证。
1.3 XML文档的组成部分

XML是一种用来描述数据并构建数据的语言,XML数据包含在文档中,这个文档可以是一个文本、一个数据流或者任何其他能够保存文本的存储介质,现实的或者虚拟的。一个正确的XML文档以如下XML申明开始,制定文档内容将要符合的XML版本
<?xml version="1.0" >
 XML还可以包含编码属性,用来定义文档的字符类型。
<?xml version="1.0" encoding="utf-8"?>
如果文档由UTF-8或者UTF-16字符组成,那么编码属性是可选的,因为XML解析器可以解析文档的前5个字符'<?xml'. XML声明其实是XML处理指令的特殊格式,其中包含了XML处理器的指令。处理指令一般在<?和?>之间。

元素
元素名称必须符合XML规范中预先描述的一套规则,你可以在http://www.w3c.org/TR/REC-xml上阅读。规范着重强调元素名称可以由字母或者下划线开头,后跟字母、数字、句点、连字符和下划线。元素名称中不允许空格。元素是XML文档的构件,可以包含数据、其它元素或者同时包含,并且总是以开始和结束标签分界。XML没有预定义元素。 <?xml version="1.0" encoding="utf-8"?>


<articles>
<article>
<title>Asp.net xml系列</title>
<author>Jack Wang</author>
<publishdate>2008-03-15</publishdate>
</article>
<article>
<title>C# xml系列</title>
<author>Jack Wang</author>
<publishdate>2009-03-15</publishdate>
</article>
<article>
<title>xml系列</title>
<author>Jack Wang</author>
<publishdate/>
</article>
</articles>

<articles>是文档的元素,<article>是<articles>的子元素<title>,<author>,<publishdate>是<article>的子元素,<publishdate/>空元素可以这样写(既没有数据的元素)。

属性
<title maintitle="ASP.NET">Asp.net xml系列</title> maintitle就是属性。

CDATA、PCDATA和实体引用
出现在<![CDATA[和 ]]>标签之间的数据就是CDATA,而其他的数据就是PCDATA(Parsed character Data). XML解析器会忽略CDATA标签中的内容。
<price><![CDATA[0<bookprice<1000]]></price>
另一种表达方法是把它们替换成实体引用

命名空间
<article>
<title>xml系列</title>
<author>
<title>Mr</title>
<nickName>Jack</nickName></author>
<publishdate/>
<price><![CDATA[0<bookprice<1000]]></price>
</article>

我们可以看到上面两个title表示不同的语义,但是无法区分,同样这种问题也会出现在多个文档组织在一起时。所以我们需要加上命名空间,作用就是和C#里的一样。
声明命名空间
Xmlns—指定值作为xml的命名空间,他是申明命名空间所必需的,并且可以附加在任何 XML元素上。
Prefix---指定一个命名空间的前缀,如果使用了该前缀,那么文档中任何使用该前缀(prefix:element)的任何元素被认为是位于申明的命名空间范围之内.
namespaceURI—指定命名空间唯一标识符。不必指向一个实际的WEB资源。


<?xml version="1.0" encoding="utf-8"?>
<articles xmlns="http://cnblogsfans.cnblogs.com/Asp.net_xml/article">
<article>
<title maintitle="ASP.NET" >Asp.net xml系列</title>
<author>Jack Wang</author>
<publishdate>2008-03-15</publishdate>
</article>
<article>
<title>C# xml系列</title>
<author>Jack Wang</author>
<publishdate>2009-03-15</publishdate>
</article>
<article>
<title>xml系列</title>
<author xmlns:mytitle="http://cnblogsfans.cnblogs.com/Asp.net_xml/article/author">
<mytitle:title>Mr</mytitle:title>
<nickName>Jack</nickName>

原文转自:http://www.ltesting.net