XML之XML的基本概念


-------------------------------------------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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值