1.XML简介:eXtensible Markup Language(可扩展标记性语言)
1>核心技术:
a.文档描述,验证,约束技术-----DTD/Schema
b.文档转换技术-----XSL
c.链接技术-----XLink/XPointer
d.编程接口-----DOM/SAX
2>xml中的每个元素都是成对出现的,xml中的元素嵌套关系要保持正确性,即先开始的标记要先结束,后开始的标记后结束。每个xml文档都有且只有一个根元素(root element).所谓的根元素,就是一唯一一个包含了其他所有元素的元素。xml描述的文档的内容和语义,而不是文档如何显示。
3>xml解析器---读取xml文档并提供对文档内容访问的软件模块。类型:无验证的解释器和验证的解释器
4>xml文档结构:
a.声明:<?xml version="1.0" encoding="utf-8" standalone="yes" > 这是xml处理指令的例子,处理指令以<?开始,以?>结束。在<?后的第一个单词是处理指令名。在本例中是xml。standlone指明该文档是独立的xml文档,也就是该xml文档不需要dtd的验证,文档中只要语法正确就是一个合法的xml文档。注<?处理指令必须要顶格写,前面不能有任何的空白。每个xml文档都以一个xml声明开始。默认的使用的编码方式是utf-8.
b.属性:xml元素可以具有属性,属性的形式为:属性名="属性值",比如gender="male",属性值需要单引号或双引号括起来。多个属性之间用空格分开。不能包含< > &这些字符,一个元素上相同名字的属性,只能出现一次。
c.处理指令:<?xml-stylesheet type="text/css" href=""?>为当前的xml文档指定样式。可以实现内容和展现样式的分离。
d.实体:
xml预定义了五种实体:<---(<) >---(>) &----(&) "---(") '---( ' )
xml自定义实体语法:<!DOCTYPE 根元素 [<!ENTITY 实体名 “实体内容”>]>
e.注释:不能嵌套<!-- 这是一个注释-->,可以在除标记以外的任何地方放注释
f.CDATA节:用于把整段文本解释为纯字符数据而不是标记的情况。包含大量<、>、&或者“字符。CDATA节中的所有字符都会当作元素字符数据常量部分,而不是xml标记
语法:<![CDATA[.............]]>(注:可以输入任意字符除]]外)
g.DOCTYPE---文档类型定义,紧跟xml声明之后,包含了所有实体的声明
语法:<!xml version="1.0"?>
<!DOCTYPE 根元素标记名[
<!--所有实体的声明-->
]>
5>格式正规的xml文档:
a.必须有xml声明语句--<?xml version="1.0"?>
b.必须有且只有一个根元素
c.标记大小写敏感
d.属性值用引号
e.标记成对
f.空标记关闭
g.元素正确嵌套
6>xml元素语法:
a.名称可以包含字母、数字或其他字符
b.名称不能以数字开头
c.不能以xml/XML/Xml/....开头
d,名称中不能包含空格
f. 名称不能包含冒号(注:冒号留给命名空间使用)
2.DTD---Document type definition
1>元素定义:
2>属性定义:
a.语法: <!ATTLIST 元素名称 属性名称 类型 属性特点.....>
b.类型:
CDATA---表示属性是字符串(包括数字和中文) 注:#PCDATA是用来定义元素
NMTOKEN---CDATA字集,表示属性值必须是英文字母,数字,句号,破折号,下划线或冒号,属性值中不能包含空格
NMTOKENS--包含多个由空格分隔的字符
ID--表明该属性的取值必须是唯一的
IDREF---属性的值指向文档中其他地方声明的ID类型的值
IDREFS---同IDREF,但是可以具有由空格分开的多个引用
Enumerated---事先定义好一些值,属性的值必须在所列出的值的范围内
c.特点:
#REQUIRED(此属性在该元素中必须出现,NOT NULL)
#IMPLIED(此属性在该元素中存在,可以出现,也可以不出现,NULL)
#FIXED value(元素实例中该属性的值必须为指定的固定值)
default value(为属性提供默认值)
3>内部实体:
a.语法:<!ENTITY 实体名 "实体值">
b.引用:&[实体名];
4>外部实体:
a.语法:<!ENTITY 实体名 SYSTEM "URI/URL">(必须使用SYSTEM,否则会用URI代替,而不是用URI的内容代替)
b.引用:&[实体名];
5>实体:
关于普通实体和参数实体
普通实体是在dtd中定义,xml中使用,使用时的格式为:&[实体名];
参数实体是在dtd中定久,dtd中使用,定义时使用%,使用是也需要使用%,%[实体名];
普通外部实体定义方式-----<!ENTITY 实体名 SYSTEM "URI/URL">表示使用uri/url网址的内容来替换指定实体,而不是使用uri/ull字符串本身
外部参数实体定义方式----<!ENTITY % 实体名 SYSTEM "URI/URL">使用:%[实体名];
7.命名空间(Namespace)---避免元素名称冲突,使用URL作为XML的Namespaces ,元素和属性都可以使用命名空间
语法:xmlns:[prefix]="URL"