XML总结(一)

来源:互联网 发布:知乎清华毕业 编辑:程序博客网 时间:2024/05/16 11:28

今天让我们来重新总结下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;,介绍,年龄)>
原创粉丝点击