一:xml安装 破解
二:XML是什么(extensible Markup Language)扩展标记语言
HTML(Hyper Text Markup Language)
A:优势
(1):支持自定义标记 (一看标记就知其意)
(2):数据仓库
(3):分离数据层和表示层
WAP协议:WireLess Application Protocol (手机)
电脑上网采用HTTP协议(Hyper Text Transfer Protocol)
手机的显示规范和显示器是不一样的 如何让一个网站成功的在不同的设备上显示 这也就是XML的优势
DTD:(Document Type Difintnion)作用是检验一个XML文档是否合法有效
如果一个XML文件没有DTD约束 只能证明他是结构完整的 但不是合法有效的
DTD是W3C提出来的
Schema:用是检验一个XML文档是否合法有效
如果一个XML文件没有Schema约束 只能证明他是结构完整的 但不是合法有效的
Schema是Microsoft提出.
XSL:(Extensible Style Language)如何把一个XML文件的数据进行显示在IE
DOM:(Document Object Model)通过语言对一个XML文件做 数据的 增加 删除 修改 查询
对元素做 增加 删除 修改 查询
本书重点: DTD和DOM
三:如何书写一个最简单是XML文件
A:声明头
<?xml version="1.0" encoding="gb2312"?>
B:定义根元素
<学生成绩通知单> </学生成绩通知单>
C:生成XML元素
<T9 StuID="S001">
<Name>小王</Name>
<Chinese>99</Chinese>
</T9>
D:注释
<!---->
元素的命名规则:
不能以数字开头 后面可以是字符 数字 字母组成的字符序列
嵌套必须完整
四:练习:
一:DTD(Document type defintnion)文档类型定义
A:作用:
验证一个XML文档是否合法有效(ISO9001)
B:如何来约束XML文档
1:如何来约束XML文档元素
元素出现次数的约束:
+ 代表该元素至少出现一次 也可以出现多次
* 代表该元素可出现可不出现 出现的时候可以是多次
? 代表带元素可以不出现 但是出现的时候只能是一次
元素的类型
(#PCDATA) 代表该元素没有子元素 但是有元素内容
EMPTY 代表该元素既没有子元素 也没有元素内容
ANY 带表该元素包含了在文档中出现的其他任何子元素
一般修饰根元素
格式:
<!ELEMENT 元素名称 出现次数 类型以及关系>
2:如何来约束XML文档属性
格式:
<!ATTLIST 属性所在的元素名称 属性名称 属性类型
属性约束>
属性的类型:
CDATA 代表该属性可以包含字符数据
ID 代表该属性的值是唯一的
IDREF 指向文档中出现的一个属性
IDREFS指向文档中出现的多个属性
属性的约束:
#REQUIRED 代表该属性必须出现
#IMPLIED 代表该属性的可以不出现
#FIXED 值 代表该属性只能取某一个值
默认值 有新值的时候取新值 否则取默认值
3:实体
就是一个调用关系
请牢记系统的5个实体 < -- < , > -- > , & -- & , " -- " , &apos -- '
3.1 DTD中的内部实体
在XML的文档中的表现形式??
语法: <!ENTITY entity-name "entity-value">
DTD 示例:
<!ENTITY writer "王俊">
<!ENTITY copyright "Copyright XML1.0">
XML 示例:
<author> &writer; ©right;</author>
3.2 DTD中的外部实体
外部实体指内容在XML文档之外的实体。
SYSTEM 关键字用于指定所有在文档之外的实体。
语法: <!ENTITY entity-name SYSTEM "URI/URL">
例: 将实体引用替换成指定的文档内容.
DTD: <!ENTITY writer SYSTEM "http://www.xml101.com/entities/entities.xml">
XML: <author>&writer;</author>
3.3 DTD 中的参数实体
只能在DTD文档中出现。
DTD 示例:
<!ENTITY %p "a">
<!ELEMENT roster ((%p;)+)>
<!ELEMENT %P; (name,age,address)>
其中p是参数实体,a是p的省略值. 根据p 的不同,DTD中roster子元素也不同。
这种用法一般用于 两个不同元素的XML文件共同关联一个DTD文件。
XML 示例:
一个文件是: <!ENTITY %p "student">
别一个文件是:<!ENTITY %p "teacher">
student 和 teacher 分别为两个文件中的roster的子元素。
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT TVGuide (Channel+)>
<!ELEMENT Channel (Name,Program+)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Program (Start,Duration,Series,Title,Description?,CastList?,Writers?,Director?,Producer?)>
<!ELEMENT Start (#PCDATA)>
<!ELEMENT Duration (#PCDATA)>
<!ELEMENT Series (#PCDATA)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Description (#PCDATA)>
<!ELEMENT CastList (CastMember+)>
<!ELEMENT Writers (Writer)>
<!ELEMENT Writer (Name)>
<!ELEMENT Director (Name)>
<!ELEMENT Producer (Name)>
<!ELEMENT CastMember (Character,Actor)>
<!ELEMENT Character (Name)>
<!ELEMENT Actor (Name)>
<!ATTLIST TVGuide Start CDATA #REQUIRED end CDATA #REQUIRED>
<!ATTLIST Program rating CDATA #IMPLIED flag CDATA #IMPLIED type CDATA #FIXED "document">
例子: 一个简单的 introduce.dtd 文件和 introduce.xml文件.
--------xml文件---------
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE school SYSTEM "introduce.dtd">
<school>
<!--<class>-->
<student stuID="s001">
<!--因为dtd文件中的属性设为ID(唯一的属性值),因此值的数字前面一定要加字母,否则出错。如 错误 [333] 正确 [s333] -->
<name>wangjun</name>
<age>28</age>
<address>应城</address>
</student>
<student stuID="s1003">
<name>duping</name>
<age>22</age>
<address>仙桃</address>
</student>
<student stuID="s005">
<name>chenjie</name>
<age>26</age>
<address>武汉</address>
</student>
<!--</class>-->
</school>
---------------dtd文件--------------
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT school (student+)>
<!ELEMENT student (name,age,address)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ATTLIST student stuID ID #REQUIRED>
====================over========================