您的位置:首页 > 其它

XML之XML的基本概念

2012-12-04 14:51 267 查看

-------------------------------------------XML之XML的基本概念----------------------------------------

一、XML概念:

1,概念:可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可       以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
      标记——代码由两部分组成,标记和内容。
      扩展——标记完全自定义,可以根据需要自行扩展。
2,作用:用于保存特定的信息,内容为保存的信息,标记用于指定保存信息的含义。
      例如:<age>18</age> ------->开始标记   内容   结束标记  
3,保存大量数据(扮演数据库角色)的弊端:纯文本格式,效率低。
      保存少量数据的优势:数据定义明确,标准化格式,便于维护和管理。
4,主要应用领域:
      a,配置文件 ,b,系统信息的交换
5,与HTML的区别:
      HTML——超文本标记语言
      共同点:都是标记语言
      不同点:HTML的标记是指定信息的展示格式。XML的标记指定的是信息内容的含义,HTML的标记预定义,XML                     的标记自定义。例如:<p>html</p>   <hello>XML</hello>
      
二、XML的规范:

1,语法要求
      a,大小写敏感  <name>playboy</name>与<Name>playboy</Name> 是2个不同的标记。
      b,有且仅有一个根标记。
      c,开始标记必须对应结束标记。<girl>pretty
girl</boy>是错误的,应该为:<girl>pretty girl</girl>。
 
    d,如果标记没有没有可以使用“<标记/>”的格式。例如:<end/>
 
    e,标记之间的关系只有2种:平行或者嵌套,不允许交叉;例如,<a>m<b></a>n</b>是错误的。
 
    f,属性必须写在开始标记中,具有特定的格式,属性值必须以“”或者''包含。例如:<age value="2"></age>;
 
    g,每个标记可以定义任意数量的属性,但属性名称必须不同;
2,XML格式:符合XML语法要求的文件都是XML格式的文件,扩展名有几十种,常用的有.xml
.xsd .tld等;

     XML文件:扩展名为.xml的文件。

3,
<?xml version="1.0" encoding="UTF-8"?>  XML的指示信息,用于对XML文件进行说明,可以不写(使用默认           值),如果写必须出现在文件的第一行

      注意:如果在文件中出现中文信息,通常将encoding属性设置为gb2312或gbk

      语法:<?...?>

4, 注释:<!--... ...-->

       注释中的内容不被处理,但如果出现中文,encoding属性也需要作相应的设定

5, 标记

      1)标记中可以包含同名标记

      2)混合标记——标记中既包含子标记又包含内容

            在解析中,混合标记操作相对复杂,通常不建议使用

            处理方法:将混合标记中的内容部分替换一个合适的子标记,该标记用于包含内容;

            如果内容分散,可以使用多个同名标记;

      例如:

   
<chapter>                        		                <chapter>
Chapter information                         		         <content>Chapter information</content>
<para>What is XML</para>        --->		 <para>What is XML</para>
<para>What is HTML</para>		                 <para>What is HTML</para>
More chapter information  			       		 <content>More chapter information</content>
<chapter> 					                 <chapter>


                 
6, XML数据类型:

       PCDATA:处理XML时将会对数据进行处理,所有没有说明的内容都属于该类型(99%)。

CDATA:处理XML时不对数据进行处理,需要使用特定的语法进行说明,在内容包含大量
特殊字符时使用较多
例如:
    
<nameXML>
<![CDATA[
<name common="freddy" breed="springer-spaniel">
Sir Frederick of Ledyard's End
</name>
]]>
</nameXML>


7, 标记和属性的命名:

       基本与Java相同,但不能使用"xml*"和"XML*"或者"Xml*"或者"XmL*"作为标记和属性的名称。

8、 DTD和XML Schema

      1)DTD:原有的用于约束XML格式的文档格式,存在很多缺点,已经逐渐被XML Schema取代,但仍然有大量的

           系统在沿用早期的配置方式(使用DTD)

       2)XML Schema:DTD的升级版本

9,命名空间:

      1) Java以package形式出现

          如com.briup.md02.Student和com.briup.md05.Student

      2) xml以namespace形式出现

          如<namespace:标记名称>......</namespace:标记名称>

三:XML Schema

1、XML Schema:
1)XML Schema是XML格式,扩展名为.xsd。
2)XML Schema类似于Java中的集合,本身是对象,用于存放对象。
3)XML Schema本身是xml,用于限定xml的格式

2、类型系统:
Schema拥有强大的,具有良好扩展性的类型系统,包括两部分
1)内置类型:如整数,字符串
2)扩展类型(自定义):将内置类型或扩展类型整合定义新的类型,在符合语法要求的情况下可以任意定义。

xsd的格式有国际标准组织定义,其文件结构本质就是定义
Schema类型系统的方式,所有标记定义必须属于"http://www.w3.org/2001/XMLSchema"这个命名空间

3、格式:
1)根标记为<schema>
2)定义xml标记使用
a.使用内置类型
<element name="标记名" type="标记类型"/>
如:<element name="id" type="int"/>
对应的xml文件内容为:<id>100</id>
b.使用扩展类型
<element name="标记名">具体的扩展细节</element>
扩展类型分为:
简单类型<simpleType>:只包含内容
复杂类型<complexType>:包含属性或子标记或两者都有
如:
    <id>100</id> 简单类型
    <id num=100/> 复杂类型

3)定义简单类型
     方法一:定义标记,将类型作为标记子标记定义
     在类型只被一个标记使用时通常用该方式
<simpleType>
<restriction base="integer">
<minInclusive value="2"/>
<maxInclusive value="5"/>
</restriction>
</simpleType>


当需要某个类型基础上做范围缩小时,可以使用以上格式

<restriction base="基础类型">具体的缩小方式</restriction>

<minInclusive> 最小值(含)

<minExclusive> 最小值(不含)

<maxInclusive> 最大值(含)

<maxExclusive> 最大值(不含)

方法二:定义类型,为类型取名,在标记定义时通过type属性指定使用的类型在类型需要被多个标记使用时使用该方       式可以减少代码冗余。

4)定义复杂类型

情况1:包含内容和属性,没有子标记
<complexType>
<simpleContent>
<extension base="内容的类型">
<attribute name="属性名称" type="属性类型" default="属性
默认值"/>
<!--更多的属性-->
</extension>
</simpleContent>
</complexType>


定义组:

形式1:所有标记必须顺序出现

<group name="组名">

<sequence>标记</sequence>

</group>

形式2:所有标记必须顺序出现,但顺序不作要求

<group name="组名">

<all>标记</all>

</group>

形式3:选择其中的任何一个标记出现

<group name="组名">

<choise>标记</choise>

</group>

注意:组不是复杂类型,在定义复杂类型时包含子标记时可以使用已经定义的组,在一组标记被多个复杂类型使用时            可以减少代码的冗余。

情况2:只有属性,没有内容和子标记

<complexType>

<attribute ... .../>

</complexType>

情况3:只包含子标记

两种格式:

格式一:

<complexType>

<!--引用已经定义的组-->

</complexType>

格式二:

<complexType>

<!--定义包含的子标记,语法与组的定义相同(三种组合方式)-->

</complexType>

情况4:包含子标记和内容(混合方式,不建议使用)

与情况3的定义方式相同,在<complexType>标记中增加属性mixed="true"(该

属性默认为false)

情况5:任何复杂类型中属性需要自定义类型

<!--外层标记省略-->

<attribute ... ...>

<simpleType>

<!--定义具体的类型及约束,与标记的简单类型格式相同-->

</simpleType>

</attribute>

情况6:包含子标记和属性

<complexType mixed="...">   //true就是有内容,false就是没有内容

<!--定义子标记-->

<!--定义属性-->

</complexType>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: