J2EE复习(二)XML
2019独角兽企业重金招聘Python工程师标准>>>
XML 可扩展标记语言
XML是一种您可以用来创建自己的标记的标记语言。
XML由万维网协会(W3C)创建
比较内容 HTML 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相关推荐
- Java开源 J2EE框架(二)
Java开源 J2EE框架(二) 2007-01-06 12:34 Jofti [Java开源 其它开源项目] Jofti可对在缓存层中(支持EHCache,JBossCache和OSCache)的对 ...
- J2EE进阶(二十四)JBoss Web和 Tomcat的区别
J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...
- 英语复习二:每单元的翻译篇章
英语复习二:每单元的翻译篇章 Unit 1 C-E translation 1.中庸思想是儒家思想的核心内容. The Doctrine of the Mean is the core of Conf ...
- mybatis(二)xml配置文件详细说明
目录 文章目录 mybatis(二)xml配置方式详细说明 2.1.使用properties配置属性 2.1.1.引入外部properties文件或在properties标签内定义属性 2.1.1.1 ...
- 网络互联复习(二) 精简版
网络互联复习(二) 精简版 常规配置 配置路由器主机名 禁用 DNS 查找 配置执行模式口令 配置当天消息标题 为控制台连接配置口令 为 VTY 连接配置口令 配置命令为: enable config ...
- python基础语法复习[二] 函数、类
python基础语法复习[二] 前言 一.函数 1.基本概念 2.一般实例 3.参数传递 (1)传不可变对象 (2)传可变对象 4.函数递归调用实例 (1)eg:实现字符串的反转: (2)递归思想画树 ...
- 2.说明计算机环境下会计循环的八个流程,2020年云南自考《会计信息系统》要点复习(二)...
对于考生们来说,想要尽早通过云南成人自考拿到自学考试的本科毕业证书,一定要制定合理的复习备考计划.此外,考生们来说大多都是在职备考的状态,考生们大多没有时间进行复习备考工作.为了帮助考生们更好的进行复 ...
- 数控技术复习(二):数控编程必备的基础知识
文章首发于个人博客,欢迎访问:数控技术复习(二):数控编程必备的基础知识 数控机床加工零件:零件图代码->程序单->控制介质->数控装置->伺服电机->机床自动加工.从零 ...
- python 基础复习二
这里写自定义目录标题 python 基础复习二 1.数据类型 2.数据的应用 3.数据的转换 总结 python 基础复习二 1.数据类型 最常用的数据类型有三种--字符串(str).整数(int)和 ...
最新文章
- linux回到桌面的命令符_Linux命令行环境与桌面环境护切换
- python多线程网络编程_python网络编程之线程
- Python中深拷贝与浅拷贝的区别?
- 每日一题:leetcode1319.联通网络的操作次数
- Linux从入门到精通系列之PPTP
- Linux下Socket网络编程
- 腾讯智慧出行和现代汽车集团创新中心(北京)正式建立创新战略合作伙伴关系
- mysql存储过程游标移动_mysql动态游标与mysql存储过程游标(示例)
- opencv roberts算子_边缘检测 Roberts算子
- 黑马程序员全套Java教程_Java基础教程_API(十四)
- python中文编码查询_Python中文编码问题
- Powershell 创建NetWork Location(盘符快捷方式)
- matlab傅里叶反变换举例,matlab傅里叶正逆变换详细说明+图例
- 双基管理 运营_浅谈如何提升双基管理水平
- matlab如何调整顺时针逆时针,关于算法:确定线段的方向是顺时针还是逆时针
- 前端常用标签与注意事项
- 三款适用于企业建站的CMS建站系统
- matplotlib用Times New Roman且不加粗
- 微服务之间单点登录和用户权限认证的实现
- Redis学习笔记1-理论篇