本笔记可根据W3school教程学习:
首先-----了解XML文档结构、语法规范、作用
-----了解DTD约束的作用、具体约束语法
<?xml version="1.0" encoding="UTF-8"?> <中国> <北京><北京> <海南></海南> </中国>
XML:eXensible Markup Language, 指可扩展标记型语言。(我们学过HTML语言也是该类型的,因此很多相似)
相同点:与HTML都是标记性语言,都用标签来操作。
与HTML的不同点:HTML是显示数据的,而XML是存储数据的。
HTML中的标签都是定义好的,而XML中可以自己定义标签和结构。
XML可以用中文标签
功能:作为配置文件
传输和存储数据。
如何理解呢?-------在我们写程序中,有很多数据需要在不同的操作系统和语言中交换,不同的操作系统和语言使用不同的方式来存储数据(两者不兼容),
那么我们通过XML数据以纯文本的格式存储需要的传递和保存的数据,在不同的系统和语言中通过解析相同的XML来确保数据相同。
XML 是独立于软件和硬件的信息传输工具。
语法: XML是形成了一种树结构,就是只有一个根标签,该标签包含其他所有的子标签。而所有标签必须要包括两部分---起始标签和结束标签
而标签本身的需要------严格区分大小写,起始和结束标签必须一致。标签属性的属性值需要用(单、双)引号包含。
标签本身中不能出现空格,其标签文本中的空格不会被自动删除,而是保留下来。
XML中有些情况会遇到特殊的字符,那些字符本身是被XML语言所官方使用,那么我们在内容使用时,需要特殊转化或代替,比如:<
XML注释 ----- <!--注释内容-->
在XML自定义标签中必须遵循命名规范:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
文档结构:XML声明-------必须以<?xml .....?>作为第一行第一列出现。
文档声明中有三个属性:
version-----xml中version的属性值有两个(1.0)和(1.1)----1.1版本不具备向下兼容性,常用1.0,代表版本号
encoding-----xml文本的编码方式
standalone-----是否依赖其他文件yes/no
注意:当XML中标签无内容时,能自己结束< />
XML中提供<?xml-stylesheet type="text/css" href="css的路径"?>指令,能链接外部文件,对xml文件设置样式
尽量不要使用属性,建议使用子元素。
XML的文档构建模块:
元素-------标签
属性------提供元素额外的信息,
实体-------定义普通文本的变量。
CDATA-----字符数据,不会被解析器解析的数据。该区特殊字符无需转译。
PCDATA---被解析的字符数据,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。
XML中提供了一种规范:XML的约束----对xml进行相关约束,同时提供一些,定义好的标签供开发者使用。在配置文件中经常使用到。
dtd约束:将文档类型定义为(DTD),即文档后缀以 .dtd结尾。
定义合法的XML文档构建模块,使用一系列合法元素来定义文档-----预定好了标签和标签使用规则
将DTD 可成行声明于XML文档中,也可作为一个外部引用。
dtd的作用:每一个XML文件可通过dtd文件在描述其自身的格式和验证语法标准。
独立的团体可通过一个标准的DTD来交换数据
应用程序能某个标准的DTD来验证外部接收到的数据
DTD内部使用----<!DOCTYPE 根元素 [ 元素声明 ]>
DTD外部引用-----<!DOCTYPE 根元素 SYSTEM "dtd文件路径">
网上DTD文件引用------<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
DTD的语法:
声明元素-------- <!ELEMENT>,有多少个元素,写多少个 <!ELEMENT>,且按顺序,从上往下。
元素分为简单元素和复杂元素。
空元素 ---------------<!ELEMENT 元素名称 EMPTY>
简单元素----没有子标签的标签-----<!ELEMENT 元素名称 类别>
空元素----EMPTY关键字声明
字符串----(#PCDATA)关键字声明
任意类型----ANY关键字声明
复杂元素---有子标签的标签-------<!ELEMENT 元素名称 (子元素1,子元素2,....)>
当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中
当子元素按照有 | 分隔开的序列进行声时,这些子元素只能出现其中的任意一个。
当以下符号修饰元素时: + :表示出现一次或多次
?:表示出现零次或一次
* :表示出现零次或多次
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
声明属性:<!ATTLIST 元素名称 属性名称 属性类型 默认值 >
<!ATTLIST contact fax CDATA #IMPLIED>
声明实体:实体是用于定义引用普通文本或特殊字符的快捷方式的变量。
实体引用是对实体的引用
内部实体声明------一个实体由三部分构成;一个和号(&),一个实体名称,以及一个分号-----<!ENTITY 实体名称 "实体的值">
外部实体声明------<!ENTITY 实体名称 SYSTEM "URI/URL">