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 |