0
点赞
收藏
分享

微信扫一扫

常见漏洞简介,网络安全(sql注入、xss、xxe、CSRF、文件上传等)

i奇异 2024-04-03 阅读 9

DTD

XML 构建模块

所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:

  • 元素
  • 属性
  • 实体
  • PCDATA
  • CDATA

语法

声明元素

语法
<!ELEMENT 元素名称 元素内容>
示例
说明语法示例描述
空元素<!ELEMENT 元素名称 EMPTY><!ELEMENT br EMPTY>空元素通过类别关键词EMPTY进行声明
只有 PCDATA 的元素<!ELEMENT 元素名称 (#PCDATA)><!ELEMENT book (#PCDATA)>只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明
带有任何内容的元素<!ELEMENT 元素名称 ANY><!ELEMENT book ANY>通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合
带有子元素(序列)的元素<!ELEMENT 元素名称 (元素[,元素,元素...])><!ELEMENT book (id,name,author)>带有一个或多个子元素的元素通过圆括号中的子元素名进行声明

声明属性

语法
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
示例
属性类型的选项
类型描述
CDATA值为字符数据 (character data)
ID值为唯一的 id
IDREF值为另外一个元素的 id
IDREFS值为其他 id 的列表
NMTOKEN值为合法的 XML 名称
NMTOKENS值为合法的 XML 名称的列表
ENTITY值是一个实体
ENTITIES值是一个实体列表
NOTATION此值是符号的名称
xml:值是一个预定义的 XML 值
默认值参数的选项
解释
#REQUIRED属性值是必需的
#IMPLIED属性不是必需的
#FIXED value属性值是固定的
属性的默认值

数量词

用于描述元素出现次数

符号描述
+至少出现一次
?出现0次或1次
*出现任意次数

示例

引用方式

内部的DOCTYPE声明

语法
<!DOCTYPE 根元素 [元素声明]>
示例
<?xml version="1.0" encoding="UTF-8"?>
<!-- 内部的DOCTYPE声明
【语法】
  <!DOCTYPE 根元素 [元素声明]>
【示例】
    book:根节点
    ELEMENT 定义元素
-->
<!DOCTYPE book[
        <!ELEMENT book (id,name,author)>
        <!ELEMENT id (#PCDATA)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT author (#PCDATA)>
        ]>
<book>
    <id>2</id>
    <name>《这是书名》</name>
    <author>张三</author>
</book>

外部文档声明

语法
<!DOCTYPE 根元素 [元素声明]>
示例
  • resources/book.dtd
<!ELEMENT book (id,name,author)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
  • resources/demo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "book.dtd">
<book>
    <id>1</id>
    <name>《这是书名》</name>
    <author>张三</author>
</book>

简要运用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books[
        <!ELEMENT books (book)+>
        <!ELEMENT book (id,name,author)>
        <!ELEMENT id (#PCDATA)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT author (#PCDATA)>
        <!ATTLIST author type (man|woman) "man">
        <!ATTLIST author age CDATA #REQUIRED>
        ]>
<books>
    <!-- book至少出现一次 -->
    <book>
        <!-- id -->
        <id>1</id>
        <!-- 书名 -->
        <name>《JAVA从入门到放弃》</name>
        <!-- 作者 
            属性type:可选(man|woman)默认值 “man”
            属性age:必填属性
             -->
        <author type="man" age="23">张三</author>
    </book>
    <book>
        <id>2</id>
        <name>《这是一本书》</name>
        <author type="man" age="32">李四</author>
    </book>
</books>
r type="man" age="23">张三</author>
    </book>
    <book>
        <id>2</id>
        <name>《这是一本书》</name>
        <author type="man" age="32">李四</author>
    </book>
</books>
举报

相关推荐

0 条评论