XML是指扩展标记语言,XML 的设计宗旨是传输数据,而非显示数据,它与html语言相似是一种标记语言。html语言是网页设计,用来显示信息。html中定义了许多标签,如:
<html></html> <br> <hr>等实用标记标签。而xml没定义标签用户可以自己定义自己需要的标签。
xml树图:
要表达如上xml树图的信息,在xml中可以这样写
<中国>
<河北>
<保定市></保定市>
<石家庄市></石家庄市>
</河北>
<河南>
<郑州市></郑州市>
<开封市></开封市>
</河南>
</中国>
这就是xml自定义标签。用户可以自己定义标签。
xml简单介绍:
xml分类:1、格式不良好(malformed)的xml文档:完全没有遵守xml文的基本规范的xml文档。
2、格式良好(well-formed)的但无效的xml文档: 遵守xml文的基本规范,但没有使用dtd或schema定义语义约束的xml文档。
3、有效(valid)的xml文档:遵守xml文的基本规范,并使用dtd或schema定义语义约束,而且也完全遵守了dtd或schema定义 语义约束的xml文档。
XML 语法规则:XML 文档必须有根元素、XML 文档必须有关闭标签、XML 标签对大小写敏感、XML 元素必须被正确的嵌套、XML 属性必须加引号。
dtd约束:dtd用来约束xml文档。比如:刚才树图中的省份,可用dtd来约束只能是34省份中的一个省份,可以约束某个数据的数据类型,指定某个属性的默认值。
第一个xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 汽车 SYSTEM "CarDTD.dtd">
<汽车>
<品牌>宝马</品牌>
<车主>张三</车主>
<保险公司>国际保险有限公司</保险公司>
<银行贷款>
<国内银行>建设银行</国内银行>
</银行贷款>
<维修地点>北京</维修地点>
</汽车>
注意:在xml中空格将被编译器编译所以我们在写xml时就不能使用缩进是代码好看的“好习惯”了。为了方便我在此缩进了。
第一行是写xml文档时必须的语句,version 表示xml版本,encoding 表示编码方式,还有一个 standalone 可以表示此xml文档是否是独立文档,独立就是在内部定义dtd约束,不独立表示引入外部dtd(我上面的xml文档是不独立的,所以有了第二条语句)。standalone 的取值是 yes 或no 。
第二行是引入外部dtd的约束,SYSTEM后是dtd的地址。
约束文件:CarDTD.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 汽车 (品牌,车主,保险公司,银行贷款,维修地点)>
<!ELEMENT 品牌 (#PCDATA)>
<!ELEMENT 车主 (#PCDATA)>
<!ELEMENT 保险公司 (#PCDATA)>
<!ELEMENT 银行贷款 (国内银行 | 国外银行)>
<!ELEMENT 国内银行 (#PCDATA)>
<!ELEMENT 国外银行 (#PCDATA)>
<!ELEMENT 维修地点 (#PCDATA)>
在 DTD 中,XML 元素通过元素声明来进行声明,语法:<!ELEMENT 元素名称 类别>,或者<!ELEMENT 元素名称 (元素内容)>
<!ELEMENT 汽车 (品牌,车主,保险公司,银行贷款,维修地点)>这句声明汽车元素中还有 品牌,车主,保险公司,银行贷款,维修地点子元素。
(#PCDATA) 表示数据时字符型数据。
dtd中的数据类型: