一、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 DTDXML 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和约束模式的更多相关文章

  1. 【Javaweb学习笔记】XML和约束模式

    一.XML语法 xml 可扩展标记语言,w3c组织发布的,用于保存有关系的数据,作为配置文件,描述程序模块之间的关系 xml 文件开头必须包括下面的标签: <?xml version=" ...

  2. JavaWeb学习笔记——Web开发模式:Mode I和Mode II

  3. XML文件定义约束

    今天在做Android项目的时候,用到了XML解析,服务端返回的不是JSON,而是XML,这时候就需要我们解析XML了,当然在解析XML的时候,需要了XML文件的定义结构,任何一个文件的定义都是要遵循 ...

  4. JavaWeb学习日记----XML基础

    1.XML基础: XML全称为eXtensible Markup Language;即可扩展标记型语言,同HTML一样使用标签来操作.它的可扩展性体现在标签可以由自己定义,可以是中文标签. XML用途 ...

  5. JavaWeb学习——web.xml文件说明

    JavaWeb学习——web.xml文件说明 摘要:本文主要学习了web.xml文件的作用以及如果配置. 是什么 web.xml文件是用来在JavaWeb项目里面初始化配置信息的,比如:访问的首页.S ...

  6. 【代码笔记】XML深入学习:DTD约束与DTD语法(1)

    2015-12-27 文件名    student.xml <?xml version="1.0" encoding="GB2312" standalon ...

  7. javaweb学习总结(二十一)——JavaWeb的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

  8. JavaWeb学习 (二十)————JavaWeb的两种开发模式

    一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示

  9. Javaweb学习笔记——(五)——————DOM&XML目录

    1.表单提交方式 *使用submit提交 <form> <input type="submit" /> </form> *使用button提交表 ...

随机推荐

  1. RobotFrameWork(四)变量运算与Evaluate

    一.特殊变量运算: 执行结果: 二.Evaluate使用 函数释义:Evaluate是执行Python表达式,并返回执行结果 示例1: 执行结果: 示例2: 执行结果:

  2. Lua 读表代码,自动生成字段名字

    表格格式为 INT STRING INT INT INT INT INT Id Desc Type SceneId OpenId MaxPliesp ClearancePlies 第1关 - 第2关 ...

  3. 两个已排序数组进行合并后的第K大的值--进军硅谷

    我看到此题时,首先想到一个一个比较遍历过去,这是最暴力的方法,后面我想到了已经排序,那么对每个数组进行二分,然后比较这两个值.此书第三种解法,挺不错,只对那个长度较小的数组进行二分查找,保证i+j-1 ...

  4. .NET LINQ 筛选数据

    筛选数据      筛选指将结果集限制为只包含那些满足指定条件的元素的操作. 它又称为选择. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 OfType ...

  5. weiphp布署在sina sae图片显示不了问题

    sae 上傳因為新浪云是有權限的限制的,所以要有權限才能上傳,以圖片為例首先在入口文件目錄(applicaiton)里的common的conf 里的config配置把上传驱动设为sea 代码 如下:' ...

  6. 【Java EE 学习 15】【自定义数据库连接池之动态代理的使用】

    一.动态代理的作用 使用动态代理可以拦截一个对象某个方法的执行,并执行自定义的方法,其本质是反射 优点:灵活 缺点:由于其本质是反射,所以执行速度相对要慢一些 二.数据库连接池设计思想 1.为什么要使 ...

  7. Power BI for Office 365(六)Power Map简介

    如果说Power BI中最给力的功能是什么,我觉得是Power Map.Power Map第一次是出现在SQL Server 2014的新特性里被提及,前身就是GeoFlow.在Power Map下可 ...

  8. Mybatis关联查询(嵌套查询)

    上一篇文章介绍了基于Mybatis对数据库的增.删.改.查.这一篇介绍下关联查询(join query). 三张表:user article blog 表的存储sql文件: /* Navicat My ...

  9. 【转】hibernate缓存:一级缓存和二级缓存

    什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能.Hibernate在进行 ...

  10. 深入分析@Transactional的用法

    关键词:事务, 编程式事务,声明式事务.spring 事务管理.AOP事务增强.@Transactional 在分析深入分析@Transactional的使用之前,我们先回顾一下事务的一些基本内容. ...