Xml学习之“刘姥姥进大观园“-----xml概述

深入到xml中,才发现xml中的概念有如此之多,结构,验证,元素。元素还有多种类型,什么“实体引用”、CDATTA,空白的意义。XML文档也有N
多的种类,什么XPath, XSL,XPointer,DTD,XHTML。真是举不胜举啊,这一头裁进来,犹如刘姥姥进了大观园。



  将一大堆的技术名词放一边,咱还是先了解一下xml的基本概念 



Xml的概念



 
Xml明确定义了结构化、描述和交换数据的方法。XML与HTML不同,它不对数据进行格式化处理。HTML中<P>代表段落,<
b>代表加粗。
HTML定义了数据如何显示,但没有定义每个元素表示什么内容。因此如果获取了HTML格式的数据,可以立即显示它,但要对数据进行整理和其他操作是就非
常困难。



  不过,如果使用<id> 、<Email>、<QQ>等来描述数据就可以立即识别出数据代表的意思。



1.1  XML元素



      XML元素是XML文档的核心。
XML元素与HTML中的元素概念相同。区别是:XML的元素命令比较松散,而HTML是限制的。 但XML的结构要求是严谨的,每个元素都需要关闭。
HTML则没有这样的要求。结构严谨的HTML,则也可以认为是XML。XML的元素名称并没有具体的限制。所以,HTML中的元素也可以作为XML的元
素使用。只要它们结构严谨,所有的元素都关闭!




<html>



      <Title><head>联系方式</head></title>



      <body>



      <h2>列表</h2>



      <hr>



</html>


    这段代码作为XML格式存在下列问题。<Body>元素没有关闭。<hr>元素也是如此。另外,<Title>元素的开始标记和结束标记大小形式不同。 XML格式应该是下面这样:




<html>



      <Title><head>联系方式</head></Title>



      <body>



      <h2>列表</h2>



      <hr></hr>



      </body>



</html>






1.2  XML属性



与HTML相似,XML元素可以附加属性。在HTML中可以:



<a href=”cwbboy.cnblogs.com”>cwbboy</a>

        其中:href便是<a>元素的属性了。
“cwbboy.cnblogs.com”是属性href的值。属性值可以用双引号,单引号,甚至不用任何符号包括。
一个元素可以拥有这多个属性,不同的属性用空格分隔。






<a href=”cwbboy.cnblogs.com”>cwbboy</a>

<table width=”100%”  height=’100%’  bgcolor=yellow></table>




但XML的属性要求更严谨,所有的属性值必须在双引号或单引号之中。



<User Nmae=”cwbboy”  Address=”Guangzhou”></User>



 

1.3  XML解析器



      与HTML一样,XML也需要解析器对文档进行解析。IE便是HTML的解析器之一,目前IE也能解释XML。



      解析器分为两种:
非验证性和验证性解释器。非验证性的解析器只检查文档的格式是否良好,也就是说它只按XML1.0
推荐标准中的基本规定验证文档是否是有效的XML文档。而验证性解析器除了验证格式结构外,还能根据另一个定义XML文档内容和结构的文档(DTD文
档),检查XML文档中的元素和属性命名是否符合预先的定义。



换句话说,其实两种解析器都需要验证文档,只是验证的参考标准不一样。 “非验证性”的解析器只验证结构,只要遵守了XML
1.0的规范,我们可以任意的命名元素和属性。我们可以用<User>表示一个用户,也可以用<UserName>表示一个用
户。 Age表示年龄,<User Age=”Eight”> </User>。至于年龄的属性的值,可以用”Eight”
也可以用数字”8”,总之格式正确就行。
而“验证性”的解析器除了验证结构外,还检查元素的命名。假设定义文档(DTD文档,后面会介绍)中定义了
元素为<User>,那你只能用这个User作为元素,甚至定义文档中规定了Age属性只能填数字,而如果你的xml文档中的Age为英文字
母的话,验证性解析器将认为你的XML文档是无效的。



    大部分时候,我们所说的XML文档,指的是能通过“非验证性”解析器验证的格式良好的XML文档。



1.4  一个完整的XML文档




<?xml version=”1.0”?>

    <capitals>

        <country name=”china”>北京</country>

        <country name=”USA”>华盛顿</country>

    </catitals>






XML结构的设计很灵活,并没有公式可以套用。只要遵守xml规范即可。上面的xml文档也可以用如下的方式表式:



<?xml version=”2.0”?>

    <data>

        <China  CapitalCity=” 北京”></China >

        <USA  CapitalCity=” 华盛顿”></USA>

    </data>





1.5  XML文档的组成部分



    XML文档最多可以由4部分组成,基中,三部分是可选的。按以下顺序排序:



      序言(Prolog,可选)



      DTD(可选)



      文档根(Document Root 必选)



      结属(Epilog,可选)





  以上几部分中,只有文档根是必选的。



下面详细介绍这四部分:



1.  序言



      XMl文档的序言部分一般包含的信息出现在文档或根元素开始标记之前。它包括应用于整个文档的信息,如字符编码、文档结构和样式表引用。另外,它还包括XML声明、注释和处理指令,XML文档序言是可选的。



XML声明是序言使用最多的一部分了。有许多解析器甚至不接受没有XML声明的文档。XML声明包含以下几部分:



XML语言的版本(version)  ,目前我们使用的版本是1.0。



文档内容的编码(encoding.这部分是可选的,如果将文档保存成UTF-8或UTF-16,解释器会自动确定共编码。.



Standalone(默认为no),表示文档是否依赖于外部文件.此部分也是可选的



实际上最简单XML声明只要version 即可:



<?xml version=”1.0”?>

Xml声明的语法与xml元素不同,它以<? 开始,以 ?>结束





2. 文档类型定义(DTD)



     
文档类型定义描述XML文档的内容。它定义XML文档秘须符合有有效结构和内容,以便将文档描述为有效文档。DTD保证了XML文件的结构是正确的。限制
了元素和属性以正确的顺序出现。甚至对元素和属性中的数据值进行了基本验证。比如:限制某个属性值必须为整型,或限制某个属性的值只能为几个可选的值之
一)



   
对于非验证性解析器而言,DTD文档没有任何意义。而验证性解释器在解析某个XML文档时,一旦发现此XML文档指定了DTD文件,便会按照DTD中的定
义对XML文档进行验证,一旦xml的内容不符合DTD中的规定。就算此文档符合xml
1.0规范,解析器也认为此文档无效。在.net中,验证失败会抛出异常。





3.文档根



    文档根是xml文档的必选部分,它位于序言和DTD之后,在所有的数据元素之前。文档根其实就是普通的XML数据元素,可以保含属性。文档根在一个文档中必须存在,而且只能一个,不允许有重复。



<?xml version=”10”?>

    <data>

        <China  CapitalCity=” 北京”></China >

        <USA  CapitalCity=” 华盛顿”></USA>

    </data>







<ata>便是文档根。





4. 结尾



结尾与序言相似,很少使用。

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [XML] 的这些文章也感兴趣:

了解WEB页面工具语言XML(一)产生背景
用XMLTextReader类加速XML存取
利用XSL和ASP在线编辑XML文档
XML卷之实战锦囊(2):动态查询
亲密接触XML(5)---XML元素
XML数据库中几个容易混淆的概念
xml中的空格之完全解说
VC#的WebXML编程
XML与HTML的结合
XML技术系列讲座(3)XML的显示——XSL样式单(上)