标签(空格分隔): 学习笔记


XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构、业务逻辑和规则。可以定义一种模式来定义XML文档的结构,并借此验证XML文档的有效性。

定义XML文档结构有两种解决方案:一种是采用文档类型定义DTD;另一种是采用XML Schema

DTD的基本结构

DTD是用来规范XML文件的格式,必须出现在头文件中,一遍XML校验器在一开始便可以得到XML文件的格式定义。DTD是一套关于标记符的语法规则,它定义了可用在文档中的元素、属性和实体,以及这些内容之间的关系。

DTD的基本结构

DTD语法格式如下:

<!DOCTYPE 根元素名称[
<!ELEMENT 子元素名称(#PCDATA)>
]>

参数说明:

  • <!DOCTYPE:文档类型声明的起始定界符;
  • 根元素名称[:一个XML文档只有一个根元素,如果XML文档使用DTD,那么根元素的名称就在这里指定;
  • <!ELEMENT子元素名称(#PCDATA)>:用来定义出现在文档中的元素;
  • ]>:文档类型声明的结束界定符。

DTD中的定义元素

包括元素名称、构成元素基本类型和元素内容类型。

声明元素类型

语法如下:

<!ELEMENT 元素名 元素内容>
  • ELEMENT:是关键字,表示对元素类型进行声明;
  • 元素名:为当前元素指定元素名称;
  • 元素内容:元素后面的内容用来指定元素的内容类型,分为 EMPTY, 子元素类型, 混合型, ANY, PCDATA5中类型。

DTD中的元素限定符

元素限定符用于在DTD中规定子元素出现的顺序和次数。

常用的元素限定符有:

  • () - 用来给元素分组;
  • | - 在列出的元素中选择一个;
  • + - 可出的元素至少出现1次(1或多次);
  • * - 列出的元素允许出现0次到任意多次(0或多次);
  • ? - 列出的元素出现0次或1次,;
  • , - 列出的元素必须按照指定的顺序出现。

DTD中的定义属性

元素属性包括属性名称、变量类型、预定义属性等。

属性的声明

<!ATTLIST Element_name
Attribute_name TYPE [added_declare]
Attribute_name TYPE [added_declare]
....
>

属性的类型

在DTD中声明属性的语法格式时属性类型是属性声明中所必须的,常用的属性类型有:

  • CDATA: 字符数据;
  • ID: 该属性值在XML文档中是唯一的;
  • IDREF: 该属性值参考了XML文档中的另一个属性;
  • ENTITY: 表示该属性的设定值是一个外部实体,如一个图片文件;
  • NMTOKEN: 属性值只能由数字、字母、下划线、连字符等符号构成;
  • NOTATION: 属性值是在DTD中声明过的注解名称;
  • Enumerat: 列出能够赋予该属性的各种值的列表,只能从中选择属性值。

在DTD中声明XML的元素必须是字符串类型时,应该使用#PCDATA(在ELEMENT标签中使用);声明属性的属性值必须是字符串时,应该使用CDATA(在ATTLIST标签中使用)。

DTD中的试题

XML中预定义的常规实体引用"&lt;" "&gt;" "&amp;" "&apos;" "quot;" 分别对应着 "<" ">" "&" "'" """.

普通内部实体

<!ELEMENT Entity_Name Entity_Value>

普通外部实体

<!ELEMENT Entity_Name SYSTEM Entity_URL>

XML学习笔记(二)-- DTD格式规范的更多相关文章

  1. XML学习总结二——DTD

    主要用处是约束XML. 1.DTD分为内部DTD与外部DTD两类: 内部DTD:将DTD定义在XML文档的内部 <!DOCTYPE  根元素名  [    元素描述]> 外部DTD < ...

  2. XML学习笔记2——DTD

    在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的 ...

  3. xml学习笔记二(规则)

    XML 的语法规则很简单,且很有逻辑.这些规则很容易学习,也很容易使用. 所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a para ...

  4. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  5. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  6. amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules

    amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules 一.总结 1.am:以 am 为命名空间 2.模块状态: {命名空间}-{模块名}-{状态描述} 3.子模块: {命名空间}- ...

  7. delphi操作xml学习笔记 之一 入门必读

    Delphi 对XML的支持---TXMLDocument类       Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...

  8. XML学习笔记(三) -- Schema

    标签(空格分隔): 学习笔记 Schema的格式 XML Schema文档是由元素.属性.命名空间和XML文档中的其他节点构成的. XML Schema有两种重要的Schema模型:Microsoft ...

  9. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  10. XML学习总结(二)——XML入门

    XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...

随机推荐

  1. 怎么学习C++?

    一个学习十年c++的建议如下: 其实学习C++的读书顺序应该是这样的(对于有C基础的朋友): C++ Primer Effective C++ Exceptional C++ Inside the C ...

  2. Chrome常用快捷键

    F2F3 下一个标签 Ctrl+1-9 切换标签 Ctrl+W 关闭 Ctrl+D 保存书签 Ctrl+T 新建书签然后地址栏输入搜索 Ctrl+Shft+T 打开上次关闭 空格 下翻页 Ctrl+J ...

  3. Xml游标

    Mainactivity package com.exmple.xmlstream; import java.util.ArrayList; import java.util.List; import ...

  4. Qunar实习回顾总结

    今天教师节,陪老师喝点小酒,回来难得抽空,整理一下实习阶段的那些零零碎碎却很有用的知识. 1.关于页面中嵌入js代码 (1)有时为了精确控制代码执行顺序流,会将js代码嵌入到网页之中.优点:改变代码触 ...

  5. ILOG的一个基本应用——解决运输问题、转运问题

    一.Ilog软件 该软件用来解决优化问题,大部分是线性问题,深一点的其他内容还不清楚.只知道一些基础的应用,网上相关内容很少.接下来就解决一个简单的运输问题 二.运输问题 数学模型 ILOG OPL程 ...

  6. 鸟哥的Linux私房菜之学习shell script

    运行程序的时候一般都是创建一个子程序来执行,所以子程序中的变量什么的在当前的shell下没法使用,但是如果使用source来执行就可以在当前shell下执行程序 shift 1 去掉第一个参数,后面接 ...

  7. A Mysql backup script

    UseCentOS can help IT managers to get rid of the boring learning methods, quick grasp Linux technolo ...

  8. 关于sql server 2008过期导致 MSSQLSERVER服务就无法启动,手动启动就报告错误代码17051。

    1.基本现象:MSSQLSERVER服务就无法启动,手动启动就报告17051错误. 2.解决办法: 第一步:进入SQL2008配置工具中的安装中心, 第二步:再进入维护界面,选择版本升级, 第三步:进 ...

  9. TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT选择 和 char varchar varchar2 的区别

    TEXT.TINYTEXT.MEDIUMTEXT.LONGTEXT选择: 储存不区分大小写的字符数据 TINYTEXT 最大长度是 255 (2^8 - 1) 个字符. TEXT 最大长度是 6553 ...

  10. Lucas定理模板

    用于大组合数对p取模的计算. #include <cstdio> #include <iostream> #include <cmath> #include < ...