0x01 定义
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
0x02 文档结构说明
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
基本文档结构例子
<!--XML声明--><?xml version="1.0"?><!--文档类型定义--><!DOCTYPE note [ <!--定义此文档是 note 类型的文档--><!ELEMENT note (to,from,heading,body)> <!--定义note元素有四个元素--><!ELEMENT to (#PCDATA)> <!--定义to元素为”#PCDATA”类型--><!ELEMENT from (#PCDATA)> <!--定义from元素为”#PCDATA”类型--><!ELEMENT head (#PCDATA)> <!--定义head元素为”#PCDATA”类型--><!ELEMENT body (#PCDATA)> <!--定义body元素为”#PCDATA”类型-->]]]><!--文档元素--><note><to>Dave</to><from>Tom</from><head>Reminder</head><body>You are a good man</body></note>
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
DTD 可以在 XML 文档内声明,也可以外部引用。
DTD(文档类型定义)
内部声明DTD
<!DOCTYPE 根元素 [元素声明]>
引用外部DTD
<!DOCTYPE 根元素 SYSTEM "文件名"><!DOCTYPE 根元素 PUBLIC "DTD名称" “DTD文件的URL”>
DTD中的一些重要的关键字
- DOCTYPE(DTD的声明)
- ENTITY(实体的声明)
- SYSTEM、PUBLIC(外部资源申请)
0x03 XML预定义的实体引用
| 实体 | 代表的标签 |
|---|---|
| < | < |
| > | > |
| " | “ |
| ' | ‘ |
| & | & |
0x04 DTD的实体类别介绍
- 内部实体
- 外部实体
举例定义
内部实体定义例子
<!ENTITY 实体名称 "实体的值">
外部实体定义例子
<!ENTITY 实体名称 SYSTEM "URI">
0x05 XML中的协议支持
不同语言的协议支持
| libxml2 | PHP | Java | NET |
|---|---|---|---|
| file | file | http | file |
| http | http | https | http |
| ftp | ftp | ftp | https |
| php | file | ftp | |
| compress.zlib | jar | ||
| compress.bzip2 | netdoc | ||
| data | mailto | ||
| glob | gopher * | ||
| phar |
PHP支持的扩展协议
| 扩展协议 | 需要扩展 |
|---|---|
| https | openssl |
| ftps | |
| zip | zip |
| ssh2.shell | ssh2 |
| ssh2.exec | |
| ssh2.tunnel | |
| ssh2.sftp | |
| ssh2.scp | |
| rar | rar |
| ogg | oggvorbis |
| expect | expect |
