2019独角兽企业重金招聘Python工程师标准>>>

XML(eXtensible Markup Language)简介
XML 可扩展标记语言
XML是一种您可以用来创建自己的标记的标记语言。
XML由万维网协会(W3C)创建
XML和Html比较
比较内容                     HTML                                                        XML

可扩展性                     不具有扩展性                                        是元标记言,可用于定义新的标记语言

侧重点                         侧重于如何表现信息                           侧重于如何结构化地描述信息

语法要求                     不要求标记的嵌套、配对等,          严格要求嵌套、配对,并遵循DTD
                                      不要求标记之间具有一定的顺序      的树形结构

可读性及可维护性    难于阅读、维护                                    结构清晰,便于阅读、维护

数据和显示的关系    内容描述与显示方式整合为一体      内容描述与显示方式相分离

编辑及浏览工具         已有大量的编辑、浏览工具              编辑、浏览工具
XML优势
数据重用
数据和表示分离
可扩展性
语意信息
XML 声明 

XML声明一般是XML文档的第一行
XML声明由以下几个部分组成:
version - -文档符合XML1.0规范
encoding - -文档字符编码,默认为"UTF-8"

遵循如下规则的XML文档称为结构完整:
语法规范
1.必须有XML声明语句

<?xml version="1.0" encoding=“GBK"?>

2.必须有且仅有一个根元素
3.标记大小写敏感
4.属性值用引号
5.标记成对
6.空标记关闭
7.元素正确嵌套
元素语法
1.名称中可以包含字母、数字或者其它字符
2.名称不能以数字和"_"(下划线)开头
3.不能以XML/xml/Xml/…开头
4.名称中不能含空格
5.名称中不能含冒号(注:冒号留给命名空间使用)

文本内容PCDATA
XML支持Unicde字符集,因此可以在文本中包含字母/数字/标点/符号等。
注意:因为XML使用<,>,和&界定标记,如果在文本中包含有这些字符,必须使用实体替代。

CDATA
1.在特殊的标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当作字符数据看

待。CDATA的形式:〈![CDATA[文本内容]]〉
2.用于把整段文本解释为纯字符数据而不是标记的情况。包含大量<、>、&或者"字符。CDATA节中的所有

字符都会被当作元素字符数据的常量部分,而不是XML标记。
3.可以输入任意字符(除]]>外)
4.不能嵌套使用CDATA

CDATA与PCDATA
PCDATA是被解析器解析的文本。文本内的标签会被当作标记,实体会被展开。
CDATA是不被解析器解析的文本。文本内的标签不会被当作标记,实体不会被展开。

XML注释
注释内容中不要出现--;
不要把注释放在标记中间;

<Name <!--the name-->>TOM</Name>

注释不能嵌套;
可以在除标记以外的任何地方放注释。

XML属性
1.属性值用双引号(")或单引号(')分隔(如果属性值中有',用"分隔;有",用'分隔)
2.一个元素可以有多个属性,它的基本格式为:<元素名 属性名="属性值">
3.特定的属性名称在同一个元素标记中只能出现一次
4.属性值不能包括<, >, &

XML文档中的属性有两个规则:
属性必须有值
那些值必须用引号括起。
您可以使用单引号,也可以使用双引号,但要始终保持一致。

命名空间---namespace
为XML中的元素设定一个唯一的标识名称
与URI结合来定义一个唯一标识
去除了XML文件中可能存在的元素名重叠的问题

DOCTYPE
文档类型声明,紧跟XML声明之后,包含所有实体声明语法:

<?xml version="1.0"?><!DOCTYPE  根元素标记名 [    <!--实体声明-->]>

实体引用
为了避免把字符数据和标记中需要用到的一些特殊符号相混淆,XML还提供了一些有用的实体引用。
作用:避免重复输入 ;

<!DOCTYPE Book(根元素)[     <!ENTITY chapter1(实体名) "玄幻小说"(实体内容)><!ENTITY chapter2 "电影记录">]>

引用已定义的实体:&实体名;

内部的 DOCTYPE 声明
假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:

<!DOCTYPE 根元素 [元素声明]>带有 DTD 的 XML 文档实例(请在 IE5 以及更高的版本打开,并选择查看源代码):

<?xml version="1.0"?><!DOCTYPE note [  <!ELEMENT note (to,from,heading,body)>  <!ELEMENT to      (#PCDATA)>  <!ELEMENT from    (#PCDATA)>  <!ELEMENT heading (#PCDATA)>  <!ELEMENT body    (#PCDATA)>]><note>  <to>George</to>  <from>John</from>  <heading>Reminder</heading>  <body>Don't forget the meeting!</body></note>

以上 DTD 解释如下:
!DOCTYPE note (第二行)定义此文档是 note 类型的文档。

!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"

!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型

!ELEMENT from (第五行)定义 frome 元素为 "#PCDATA" 类型

!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型

!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型
外部文档声明
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:

<!DOCTYPE 根元素 SYSTEM "文件名">这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD: (在 IE5 中打开,并选择“查看源代码”命令。)

<?xml version="1.0"?><!DOCTYPE note SYSTEM "note.dtd"><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>

声明一个元素
在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:

 <!ELEMENT 元素名称 类别>
 <!ELEMENT 元素名称 (元素内容)>

空元素:通过类别关键词EMPTY进行声明:

 <!ELEMENT 元素名称 EMPTY>

只有 PCDATA 的元素:通过圆括号中的 #PCDATA 进行声明:

 <!ELEMENT 元素名称 (#PCDATA)>

带有任何内容的元素:通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

 <!ELEMENT 元素名称 ANY>

带有一个或多个子元素的元素:通过圆括号中的子元素名进行声明:

 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

<!ELEMENT note (to,from,heading,body)>当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。

声明只出现一次的元素

 <!ELEMENT 元素名称 (子元素名称)>
 <!ELEMENT note (message)>

上面的例子声明了:message 子元素必须出现一次,并且必须只在 "note" 元素中出现一次。

声明最少出现一次的元素

 <!ELEMENT 元素名称 (子元素名称+)>

声明出现零次或多次的元素

 <!ELEMENT 元素名称 (子元素名称*)>

声明出现零次或一次的元素

  <!ELEMENT 元素名称 (子元素名称?)>

声明“非.../既...”类型的内容:

 <!ELEMENT note (to,from,header,(message|body))>

上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
声明混合型的内容:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

上面的例子声明了:"note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

XML Schema 简介
1.XML Schema 是基于 XML 的 DTD 替代者。
2.XML Schema 可描述 XML 文档的结构。
3.XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。
4.XML Schema 是 DTD 的继任者
XML Schema 很快会在大部分网络应用程序中取代 DTD,理由如下:
1.XML Schema 可针对未来的需求进行扩展
2.XML Schema 更完善,功能更强大
3.XML Schema 基于 XML 编写
4.XML Schema 支持数据类型
5.XML Schema 支持命名空间

<schema> 元素是每一个 XML Schema 的根元素:

<?xml version="1.0"?>

<xs:schema>

...
...

</xs:schema>

转载于:https://my.oschina.net/xlc8859/blog/347

J2EE复习(二)XML相关推荐

  1. Java开源 J2EE框架(二)

    Java开源 J2EE框架(二) 2007-01-06 12:34 Jofti [Java开源 其它开源项目] Jofti可对在缓存层中(支持EHCache,JBossCache和OSCache)的对 ...

  2. J2EE进阶(二十四)JBoss Web和 Tomcat的区别

    J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...

  3. 英语复习二:每单元的翻译篇章

    英语复习二:每单元的翻译篇章 Unit 1 C-E translation 1.中庸思想是儒家思想的核心内容. The Doctrine of the Mean is the core of Conf ...

  4. mybatis(二)xml配置文件详细说明

    目录 文章目录 mybatis(二)xml配置方式详细说明 2.1.使用properties配置属性 2.1.1.引入外部properties文件或在properties标签内定义属性 2.1.1.1 ...

  5. 网络互联复习(二) 精简版

    网络互联复习(二) 精简版 常规配置 配置路由器主机名 禁用 DNS 查找 配置执行模式口令 配置当天消息标题 为控制台连接配置口令 为 VTY 连接配置口令 配置命令为: enable config ...

  6. python基础语法复习[二] 函数、类

    python基础语法复习[二] 前言 一.函数 1.基本概念 2.一般实例 3.参数传递 (1)传不可变对象 (2)传可变对象 4.函数递归调用实例 (1)eg:实现字符串的反转: (2)递归思想画树 ...

  7. 2.说明计算机环境下会计循环的八个流程,2020年云南自考《会计信息系统》要点复习(二)...

    对于考生们来说,想要尽早通过云南成人自考拿到自学考试的本科毕业证书,一定要制定合理的复习备考计划.此外,考生们来说大多都是在职备考的状态,考生们大多没有时间进行复习备考工作.为了帮助考生们更好的进行复 ...

  8. 数控技术复习(二):数控编程必备的基础知识

    文章首发于个人博客,欢迎访问:数控技术复习(二):数控编程必备的基础知识 数控机床加工零件:零件图代码->程序单->控制介质->数控装置->伺服电机->机床自动加工.从零 ...

  9. python 基础复习二

    这里写自定义目录标题 python 基础复习二 1.数据类型 2.数据的应用 3.数据的转换 总结 python 基础复习二 1.数据类型 最常用的数据类型有三种--字符串(str).整数(int)和 ...

最新文章

  1. linux回到桌面的命令符_Linux命令行环境与桌面环境护切换
  2. python多线程网络编程_python网络编程之线程
  3. Python中深拷贝与浅拷贝的区别?
  4. 每日一题:leetcode1319.联通网络的操作次数
  5. Linux从入门到精通系列之PPTP
  6. Linux下Socket网络编程
  7. 腾讯智慧出行和现代汽车集团创新中心(北京)正式建立创新战略合作伙伴关系
  8. mysql存储过程游标移动_mysql动态游标与mysql存储过程游标(示例)
  9. opencv roberts算子_边缘检测 Roberts算子
  10. 黑马程序员全套Java教程_Java基础教程_API(十四)
  11. python中文编码查询_Python中文编码问题
  12. Powershell 创建NetWork Location(盘符快捷方式)
  13. matlab傅里叶反变换举例,matlab傅里叶正逆变换详细说明+图例
  14. 双基管理 运营_浅谈如何提升双基管理水平
  15. matlab如何调整顺时针逆时针,关于算法:确定线段的方向是顺时针还是逆时针
  16. 前端常用标签与注意事项
  17. 三款适用于企业建站的CMS建站系统
  18. matplotlib用Times New Roman且不加粗
  19. 微服务之间单点登录和用户权限认证的实现
  20. Redis学习笔记1-理论篇

热门文章

  1. 【Linux】Linux简单操作之压缩解压
  2. 【java】兴唐第十九节课(内部类)
  3. void函数返回值_(*void(*)()0)() 是什么
  4. iOS中的动力学:Dynamics【1】
  5. 第五次作业:四则运算之升级
  6. javascript推荐书籍
  7. JavaScript系统对象
  8. 总结六条对我们学习Linux系统有用的忠告
  9. Nginx负载均衡集群介绍
  10. log4j日志记录级别是如何工作?