【Javaweb学习笔记】XML和约束模式
一、XML语法
xml 可扩展标记语言,w3c组织发布的,用于保存有关系的数据,作为配置文件,描述程序模块之间的关系
xml 文件开头必须包括下面的标签:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
encoding 用来指定XML文档的字符编码,一般都是 UTF-8
standalone 用来说明文档是否独立,默认是no,通常用不到这属性(如果是 yes 则表示XML既不需要约束文件来验证标记是否有效,也不需要XSL、CSS控制外观显示)
元素:由一个标记来定义,包括开始和结束标记以及其中的内容,如 <book>深入体验java web开发内幕</book> (标记可以嵌套;格式良好的xml文档有且仅有一个根标签,其他标签都是根标签的子孙标签;在xml中空行和空格都会被作为原始内容解析)。XML只可有一个根节点。
命名规范:区分大小写,<A></A>和<a></a>是两种不同的标签;不能以数字、下划线或者xml开头;不能包含空格、冒号:
属性:XML解析属性的速度比解析子标记快,属性值必须用双引或单引引起来,属性也可被改为子标签的形式存储
<input name="txt1" />
<input>
<name>txt1</name>
</input>
CDATA区:其中的内容不会被xml解析引擎解析,而是作为原始内容显示,如 <![CDATA[这是是CDATA区的内容]]>
处理指令:简称PI,用来指挥xml解析引擎如何解析xml,以“<?”开头,以“?>”结尾,例如:文档声明 <?xml version="1.0" ?> ; <?xml-stylesheet type="text/css" href="1.css" ?> ,它用来通知xml解析引擎使用css文件控制xml显示外观
二、XML约束模式
约束模式定义了XML文档的标记和结构,类似于数据表结构。XML约束模式的内容也要遵循一定的语法规则,其中主流有2种:XML DTD 和 XML Schema
2.1、XML DTD
DTD约束即可以作为一个单独的文件(以.dtd为后缀)编写,也可以在XML文件内编写。其中包括元素之间的关系定义、元素属性定义、实体和符号的定义。
1. 定义dtn文件bookshelf.dtd(“书”和括号“()”之间有空格,“名称”和“(#PCDATA)”之间同样也有)
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (名称,作者,售价)>
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
2. 在book.xml引入dtd约束文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "bookshelf.dtd" >
<书架>
<书>
<名称>深入体验java web开发内幕</名称>
<作者>张孝祥</作者>
<售价>59元</售价>
</书>
</书架>
3. 在chrome浏览器中的显示如下

XML文档引用外部DTD约束的2种方式
- 引用本地dtd文件 <!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">
- 引用公用dtd文件 <!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
也可以把dtd约束写在xml文件中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架[
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (名称,作者,售价)>
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
]>
<书架>
<书>
<名称>深入体验java web开发内幕</名称>
<作者>张孝祥</作者>
<售价>59元</售价>
</书>
</书架>
2.2、XML Schema
schema比dtd好,已经成为w3c组织的标准,正逐步取代dtd
名称空间:使用名称空间来区分每个约束模式文档,每个名称空间都用一个唯一的URI表示。
名称空间声明:在XML文件中为一个约束模式文档的名称空间指定一个临时的简称,这个简称将作为元素和属性的前缀名。名称空间声明和元素的属性定义非常类似,可以位于任何一个元素的开始标记中,并且一个元素中可以声明多个名称空间;名称空间声明的基本格式为 xmlns:前缀名称="URI" ,其中的前缀名称就是临时的简称。 (xmlns是xml namespace的简写)。默认名称空间 xmlns="URI" ,即省略掉前缀名称。
<html xmlns:xs="http://www.w3.org/2001/XMLSchema">
使用名称空间引入XML Schema文档
由上面的标记只能知道 "http://www.w3.org/2001/XMLSchema" 是代表某个名称空间的URI,并不能知道名称空间XML Schema文档的访问地址,那就无法对XML文档进行校验。
使用 xs:schemaLocation 以键值对的形式指定名称空间和其对应的xsd文件地址。使用之前,必须先引入xs的命名空间,这样才能使用 xs:schemaLocation 。因为 xmlns:xs="http://www.w3.org/2001/XMLSchema" 这个名称空间众所周知,所有无需指定它的访问地址。
<书架 xmlns="http://www.xxx.com/bookshelfSchema"
xmlns:test="http://www.demo.com/testSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xs:schemaLocation="http://www.xxx.com/bookshelfSchema http://www.xxx.com/xsd/bookshelf.xsd
http://www.demo.com/testSchema http://www.xxx.com/xsd/test.xsd
"
>
【Javaweb学习笔记】XML和约束模式的更多相关文章
- 【javaweb学习】XML和约束模式
xml:可扩展标记语言,w3c组织发布的,用于保存有关系的数据,作为配置文件,描述程序模块之间的关系 <?xml version="1.0" encoding="g ...
- JavaWeb学习笔记——XML解析
DOM解析操作 只在跟节点<addresslist>下面建立一个子节点<name> <?xml version="1.0" encoding=&quo ...
- JavaWeb学习笔记——XML和SAX解析区别
- JavaWeb学习笔记——XML简介
- JavaWeb学习笔记总结 目录篇
JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...
- JavaWeb学习——web.xml文件说明
JavaWeb学习——web.xml文件说明 摘要:本文主要学习了web.xml文件的作用以及如果配置. 是什么 web.xml文件是用来在JavaWeb项目里面初始化配置信息的,比如:访问的首页.S ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- html学习笔记-XML
html学习笔记-XML Table of Contents 1. XML简介 2. XML用途 3. XML树结构 4. XML语法 5. XML元素 6. XML属性 7. XML验证 8. XM ...
- jsp学习笔记:mvc开发模式
jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息 ...
随机推荐
- java spring使用Jackson过滤
一.问题的提出. 项目使用Spring MVC框架,并用jackson库处理JSON和POJO的转换.在POJO转化成JSON时,希望动态的过滤掉对象的某些属性.所谓动态,是指的运行时,不同的cont ...
- java基本数据类型和包装类相互转换
把基本数据类型 → 包装类: 通过对应包装类的构造方法实现 除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象. 包装类 → 基本数据类型 包装类的实例方法xxxValue() ...
- Python--day46--mysql存储过程(不常用)(包含防sql注入)
一.存储过程: 优点:只要传很少的数据到数据库就可以了 缺点:dba管理数据库的时候可能会对数据库进行了更改了那一坨sql语句. 二.创建存储过程: 1.简单 创建存储过程: Python中使用结果 ...
- 51nod 1380"夹克老爷的逢三抽一"(贪心+set)
传送门 •参考资料 [1]:51Nod-1380-夹克老爷的逢三抽一 •题意 从长度为 n 的数组中抽取 $\frac{n}{3}$ 个不相邻的值使得加和最大(首尾也不能同时取) •题解 贪心选择当前 ...
- Js中“==”和“===”的区别
从字面上来讲,‘==’代表相等,‘===’代表严格相等. 具体来讲,比较过程如下: 比较过程: ‘==’: 1. 首先判断两个值的类型是否相同,如果相同,进行‘===’判断. 2. ...
- 2018-12-14-恢复-U-盘隐藏文件夹
title author date CreateTime categories 恢复 U 盘隐藏文件夹 lindexi 2018-12-14 19:24:56 +0800 2018-12-14 19: ...
- http请求头包括了哪些常见内容
Host: www.study.com // 请求的地址域名和端口,不包括协议 Connection: keep-alive // 连接类型,持续连接 Upgrad ...
- linux单 open 设备
提供存取控制的强力方式是只允许一个设备一次被一个进程打开(单次打开). 这个技术最 好是避免因为它限制了用户的灵活性. 一个用户可能想运行不同的进程在一个设备上, 一 个读状态信息而另一个写数据. 在 ...
- es6笔记 day1---let和const的应用
ES6 -> ECMA标准 ES7 ES8 最早是由ECMA-262版本实现的 ---------------------------------------- ES6 也称为ES2015,2 ...
- Servlet 会话
在网络的七层模型中,会话层位于传输层之上,它定义如何开始.控制和结束一个会话.七层模式目前仅仅处于理论阶段,但是Web中借鉴了其中的一些思路.在Web中浏览器第一次发送请求到服务器开始直到一方断开为止 ...