XML 笔记
标记语言种类:
1.格式化标记 <b>加粗</b>,<i></i>
2.结构化标记 <div></div>,<table></table>
3.语义标记 <pre></pre> <strong></strong>
eXtensible Markup Language XML标记
可扩展标记语言,是自定义,自描述的
XML是SGML的子集.
XML结构:
XML声明-> <?xml version="1.0" encoding="UTF-8"?>
↓ ↓ ↓ ↓
指定 目标 版本 编码
文档类型定义-> <!DOCTYPE catalog SYSTEM "catalog.dtd">
↓ ↓
根元素 导入文件
注释 -> <!-- catalog last updated 2000-11-01 -->
根元素-> <book id="bk101">
→ <author>Abercrombie, Kim</author>
| <title>XML Developer's Guide</title>
| <genre>Computer</genre>
元素 -> | <price>44.95</price>
| <publish_date>2000-10-01</publish_date>
| <description>
| <![CDATA[An in-depth look at
| creating applications with XML, using <, >,
| ]]>
| and &.
→ </description>
</book>
* O->N
+ 1->N
? O->1
XML的优越性:
1.信息共享
2.数据传递
3.数据重用
4.分离数据和显示
5.文档包含语义
6.可扩展性
元素内容类型:
空元素(EMPTY) <image source=“11.jpg”/>
ANY 元素(内容类型可以是任意的,可以是子元素,注释,指令,一般是根元素)
(#PCDATA)类型:内容类型只能是字符数据元素间的关系
可以是一个父元素对应多个子元素或一个子元素等
子元素的之间的关系可以是顺序关系,选择关系
自定义实体语法:
<!DOCTYPE 根元素 [
<!ENTITY 实体名 "实体内容">
]>
<!DOCTYPE 班级 [ <!ENTITY pic1 “001.jpg” ]>
实体 符号
< <
> >
& &
" "
' '
XML文本字符串: <![CDATA[<<<,.?'">>>]]> 显示-> <<<,.?'">>>
语法规范
- 必须有XML声明语句
- <?xml version="1.0" encoding="gb2312"?>
- 必须有且仅有一个根元素
- 标记大小写敏感
- 属性值用引号
- 标记成对
- 空标记关闭
- 元素正确嵌套
元素语法
- 名称中可以包含字母、数字或者其它字符
- 名称不能以数字和"_"(下划线)开头
- 不能以XML/xml/Xml/…开头
- 名称中不能含空格
- 名称中不能含冒号(注:冒号留给命名空间使用)
XML的应用范围: 系统配置 应用程序集 数据加载 Web服务 内容管理
文档类型定义 Document Type Definition --> DTD
元素(ELEMENT)的定义规则
属性(ATTLIST)的定义规则
可使用的实体(ENTITY)或符号(NOTATION)规则
DTD文档与XML文档实例的关系
类与对象
数据库表结构与数据记录
DTD文档的声明及引用
内部DTD文档
<!DOCTYPE 根元素 [定义内容]>
外部DTD文档
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [
定义内容
]>
元素定义
语法:
<!ELEMENT NAME CONTENT>
↓ ↓ ↓
关键字 元素名称 元素类型
元素类型:
EMPTY --> 该元素不能包含子元素和文本,但可以有属性-(空元素)
ANY --> 该元素可以包含任何在DTD中定义的元素内容
#PCDATA --> 可以包含任何字符数据,但是不能在其中包含任何子元素
纯元素类型 --> 只包含子元素,并且这些子元素外没有文本
混合类型 --> 包含子元素和文本数据的混合体
示例:
EMPTY示例--空元素
<家庭>
<人 名字="皮诺曹" 性别="男" 年龄="6"/>
</家庭>
ANY示例
<家庭>
<人>皮诺曹</人>
<人><大人>皮诺曹爸爸</大人></人>
</家庭>
#PCDATA示例
<家庭>
<人 性别="男" 年龄="6">皮诺曹</人>
</家庭>
组合类型示例
<!ELEMENT 家庭 (人+, 家电*)>
属性的定义
语法:
<!ATTLIST 元素名称
属性名称 类型 属性特点
...
>
类型:
CDATA 任何字符串(文本)
ID 唯一的
IDREF 指向文档中其它地方声明的ID类型的值
IDREFS IDREFS同IDREF,可以具有由空格分开的多个引用
NMTOKEN 属性的值必须对应一个在DTD文档内声明的实体.(如:图形)
NMTOKENS 与ENITIY类似,可以包含多个由空格分开的实体.
Enumerated 枚举类型
属性的特点
- #REQUIRED 元素的所有实例都必须有该属性的值(必填)
- #IMPLIED 元素的实例中可以忽略该属性(可填)
- FIXED value 元素实例中该属性的值必须为指定的固定值(常量)
- Default value 为属性提供一个默认的值
定义实体
内部 - <!ENTITY 实体名 "实体值">
外部 - <!ENTITY 实体名 SYSTEM "URI/URL">
实体类型:
普通实体、外部实体、参数实体、外部参数实体.
实体类型引用方式 %实体名 (相当于用户控件)
<!ENTITY %地址 "街道,城市,国家" >
<!ENTITY 联系 (人名,电话,%地址;)>
命名空间(Namespace)
- 避免命名冲突
- 代码清晰
命名空间的语法定义:xmlns:[prefix]="URL"
默认命名空间 xmlns=“URL”