今天让我们来重新总结下XML
一.为什么要用XML
1.XML是一种通用的数据传输格式,目前应该是XML格式和JSON格式运用的最多,这两种格式各有优劣,以后我们讲到json的时候会对两种格式进行对比。
2.XML格式可以用来描述比较复杂的数据。结构也比较清晰。
3.我们做java web相关的应该都明白,我们用大量的xml文件用来做配置文件。
二.总结最近在工作学习中对xml相关知识的疑问以及相关延伸学习
1.关于 XML 头声明和standalone 的解释
头申明这种格式:
<?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 “值” 表示如果不指定,则默认.
属性类型 5种
CDATA 表示可以放入文本
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;,介绍,年龄)>