初识XML
一个好的代码基础能帮助你更好理解一类漏洞,所以先学习一下XML的基础知识。
XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具,简单来说XML主要是面向传输的。
什么是XML?
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签
XML 被设计为具有自我描述性
XML 是 W3C 的推荐标准
与HTML的对比
XML 不是 HTML 的替代
XML 和 HTML 为不同的目的而设计
XML 被设计为传输和存储数据,其焦点是数据的内容
HTML 被设计用来显示数据,其焦点是数据的外观
HTML 旨在显示信息,而 XML 旨在传输信息 XML文档结构
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
<!ELEMENT from (#PCDATA)> <!--定义from元素为”#PCDATA”类型-->
<!ELEMENT head (#PCDATA)> <!--定义head元素为”#PCDATA”类型-->
<!ELEMENT body (#PCDATA)> <!--定义body元素为”#PCDATA”类型-->
]]]>
<!--文档元素-->
<note>
<to>wecome</to>
<from>to</from>
<head>This wave is hacker</head>
<body>You are a good hacker</body>
</note>
复制代码
DTD:
文档类型定义(DTD)可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于XML文档中(内部引用),也可作为一个外部引用。
DTD文档中有很多重要的关键字如下:
o DOCTYPE(DTD的声明)
o ENTITY(实体的声明)
o SYSTEM、PUBLIC(外部资源申请)
可以用如下语法引入外部DTD
<!DOCTYPE 根元素 SYSTEM "文件名">
复制代码
可以用如下语法引用内部DTD
<!DOCTYPE 根元素 [元素声明]>
复制代码
实体:
实体可以理解为变量,其必须在DTD中定义申明,可以在文档中的其他位置引用该变量的值。
实体按类型主要分为以下四种:
o 内置实体 (Built-in entities)
o 字符实体 (Character entities)
o 通用实体 (General entities)
o 参数实体 (Parameter entities)
当然,如果实体根据引用方式,还可分为内部实体与外部实体。
完整的实体类别可参考 DTD - Entities