XML总结(一)

今天让我们来重新总结下XML
一.为什么要用XML

1.XML是一种通用的数据传输格式,目前应该是XML格式和JSON格式运用的最多,这两种格式各有优劣,以后我们讲到json的时候会对两种格式进行对比。
2.XML格式可以用来描述比较复杂的数据。结构也比较清晰。
3.我们做java web相关的应该都明白,我们用大量的xml文件用来做配置文件。
二.总结最近在工作学习中对xml相关知识的疑问以及相关延伸学习
1.关于 XML 头声明和standalone 的解释
头申明这种格式:



<?xml version="1.0" encoding="utf-8" standalone="yes" ?>  
standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表示可以用外部的DTD规范文档。
注意,这里出现了DTD文档。DTD文档是对于XML文件的一种约束文档,使得XML文件的编写需要遵循一定的规则。
2.XML 中 需要转义的字符 
首先 <   小于号是必须禁止在XML中出现的,为什么呢?这个很好解释 因为< 在xml中代表一个新的元素的开端,所以这个字符必须在xml中出现时必须转义
然后&  逻辑与也是必须禁止的,因为&是转义字符的前缀,如果要想用这个字符就需要转义

所以在XML中严格需要转义的有< &


按照规定,XML中需要转义的字符由
&  &amp;
<  &lt;
>  &gt;
"  &quot;
'  &apos;
转义字符必须以;结尾
3.XML中CDATA段  #PCDATA CDATA 各代表什么
1)在XML文档中所有的文本都会被解析器解析,只有在标记CDATA中所有的标记,
实体引用都会被解析器忽略,而被XML处理程序当作字符数据看待
2)#PCDATA在元素类型声明中,将元素的类型声明为#PCDATA表示该元素的内容是可解析的字符数据,不能在该元素下包含子类,
如<!ELEMENT name (#PCDATA)> 注意这里的name和"("之间必须要有一个以上空格        运用在dtd文件中

3)#CDATA类型CDATA是最普通的属性类型,表明属性可以是任何文本字符串,但不包括小于号"<"和双引号">",
如要使用这两个符号可以使用实体引用"&lt;"和"&quot;",其语法如下<!ATTLIST 元素名
属性名 类型  特点><!ATTLIST student  name CDATA #REQUIRED>总结:CDATA段可以理解成一个字符区,其内部内容XML解析器当成字符串 ,#PCDATA 是用来声明元素的类型,CDATA则是表示属性类型

接3)
下面我们来看一个dtd文件,来帮助对这个的理解
<?xml version="1.0" encoding="GBK"?>
<!ELEMENT beans (bean|aop-config)*>
<!ELEMENT bean (property*|constructor-arg*)>
<!ELEMENT aop-config (aspect*)>
<!ELEMENT aspect (pointcut,before?,around?,after?)>
<!ELEMENT property (bean|list|set|map|props)>
<!ELEMENT list (ref*)>
<!ELEMENT set (ref|bean)*>
<!ELEMENT map (entry*)>
<!ELEMENT props (prop*)>
<!ELEMENT prop (#PCDATA)>

<!ATTLIST bean id ID #IMPLIED>
<!ATTLIST bean class CDATA #REQUIRED>
<!ATTLIST bean value CDATA #IMPLIED>
<!ATTLIST property name CDATA #REQUIRED>
<!ATTLIST property value CDATA #IMPLIED>
<!ATTLIST property ref IDREF #IMPLIED>
<!ATTLIST constructor-arg type CDATA #IMPLIED>
<!ATTLIST constructor-arg value CDATA #IMPLIED>
<!ATTLIST constructor-arg ref IDREF #IMPLIED>
<!ATTLIST ref bean IDREF #REQUIRED>
<!ATTLIST entry key CDATA #REQUIRED>
<!ATTLIST entry value-ref IDREF #REQUIRED>
<!ATTLIST prop key CDATA #REQUIRED>
<!ATTLIST aspect ref IDREF #REQUIRED>
<!ATTLIST pointcut expression CDATA #REQUIRED>
<!ATTLIST before method CDATA #REQUIRED>
<!ATTLIST around method CDATA #REQUIRED>
<!ATTLIST after method CDATA #REQUIRED>
<!ELEMENT 元素名 类型>
类型:
EMPTY, ANY , #PCDATA

这里写图片描述


属性的特点有四种
#REQUIRED  表示必须有
#IMPLIED 表示可以有
#FIXED “值” 表示如果有,则必须是什么
Default “值” 表示如果不指定,则默认.
属性类型 5CDATA 表示可以放入文本
ID   表示属性的值,不能重复,同时不要用数字开头.
IDREF/IDREFS   当一个元素的属性值,需要去引用另外一个ID ,则使用IDREF,如果希望引用多个,则使用IDREFS,请用空格隔开.
Enumerated  表示属性的值,只能是例举出了 比如
<!ATTLIST 学生 
   地址 CDATA #FIXED "北京"
   学号 ID #REQUIRED
   大哥 IDREFS #REQUIRED
   性别 (男|女) #REQUIRED
>
ENTITY 

就是实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容
了

引用实体  用在xml中
例:
<!ENTITY mycopy "我的公司版权">
说明:最好把定义放在dtd的最后
在xml中使用
&mycopy;

参数实体 用在dtd文件本身中
基本语法
<!ENTITY  %  实体名字 ”实体内容”>
引用的方式
%实体名字;
<!ELEMENT 班级 (学生*)>
<!ENTITY % myname "名字">
<!ELEMENT 学生 (%myname;,介绍,年龄)>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值