【javaweb学习】XML和约束模式

xml:可扩展标记语言,w3c组织发布的,用于保存有关系的数据,作为配置文件,描述程序模块之间的关系

<?xml version="1.0" encoding="gb2312" standalone="yes" ?>

encoding 指定文档的字符编码; standalone 说明文档是否独立,如果 yes 则表示XML文件既不需要DTD文件来验证标记是否有效,也不需要XSL、CSS控制外观显示

元素:由一个标记来定义,包括开始和结束标记以及其中的内容, <book>深入体验java web开发内幕</book> (标记可以嵌套;格式良好的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

DTD约束即可以作为一个单独的文件(以.dtd为后缀)编写,也可以在XML文件内编写。其中包括元素之间的关系定义、元素属性定义、实体和符号的定义。

案例1:bookshelf.dtd

<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (名称,作者,售价)>
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>

在book.xml中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "bookshelf.dtd" >
<书架>
    <书>
        <名称>深入体验java web开发内幕</名称>
        <作者>张孝祥</作者>
        <售价>59元</售价>
    </书>
</书架>

在chrome浏览器中的显示如下

注意:
1. XML只可有一个根节点
2. “书”和括号“()”之间有空格,“名称”和“(#PCDATA)”之间同样也有
3. 若没有“书架”,把“书”作为节点,也会报错

XML文档引用外部DTD约束

引用本地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">

案例2: 在xml文件中编写dtd约束

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架[
    <!ELEMENT 书架 (书+)>
    <!ELEMENT 书 (名称,作者,售价)>
    <!ELEMENT 名称 (#PCDATA)>
    <!ELEMENT 作者 (#PCDATA)>
    <!ELEMENT 售价 (#PCDATA)>
]>
<书架>
    <书>
        <名称>深入体验java web开发内幕</名称>
        <作者>张孝祥</作者>
        <售价>59元</售价>
    </书>
</书架>

DTD约束模式

dtd文件中声明xml元素的格式: <!ELEMENT 元素名称 元素类型> , 元素类型 可以是元素内容或类型,如果是元素内容,要用括号包起来,如果是类型,直接书写

<!ELEMENT 书 (名称,作者,售价)>
<!ELEMENT 书 (书名|作者|价格)>
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 书 EMPTY>
<!ELEMENT 书 ANY>

元素内容中用加号“+”表示元素出现>=1次,“?”表示出现1或者0次,“*”表示多少次都行。

  • 第1行,元素“书”有三个子元素“名称”“作者”“售价”,且排列顺序必须与声明时一致
  • 第2行,元素“书”只能有“名称”“作者”“售价”三者中的一个作为子元素
  • 第3行,元素类型为 #PCDATA
  • 第4行,元素类型为空,如 <br/>
  • 第5行,元素类型任意

dtd文件中元素属性定义的格式(元素必须已经声明了,才能为其声明属性):

<!ATTLIST 元素名称
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
...

属性类型有 CDATA 、 ENUMERATED 、 ID ,第一个表示属性值为普通文本字符串 ,第二个表示属性值只能是一组属性值中的一个,如  <!ATTLIST person sex (nan|nv) #IMPLIED> ,第三个表示元素的id,值唯一

设置说明有 #REQUIRED 必须设置该属性, #IMPLIED 可选 , #FIXED 该属性值固定为某个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值 ,直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。

<!ATTLIST person
    id ID #REQUIRED
    name CDATA #REQUIRED
    sex (nan|nv) #IMPLIED nan
    age CDATA #IMPLIED 12
>

schema约束模式

schema比dtd好,已经成为w3c组织的标准,正逐步取代dtd

名称空间:使用名称空间来区分每个约束模式文档,每个名称空间都用一个唯一的URI表示。

名称空间声明:就是在XML中为一个约束模式文档的名称空间指定一个临时的简称,这个简称将作为元素和属性的前缀名。名称空间声明和元素的属性定义非常类似,可以位于任何一个元素的开始标记中,并且一个元素中可以声明多个名称空间;名称空间声明的基本格式为 xmlns:前缀名称="URI" ,其中的前缀名称就是临时的简称。 (xmlns是xml namespace的简写)。默认名称空间 xmlns="URI" ,即省略掉前缀名称。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

使用名称空间引入XML Schema文档

上面的标记只能知道"http://www.w3.org/2001/XMLSchema"是代表某个名称空间的URI,并不能知道名称空间XML Schema文档的访问地址,那就无法对XML文档进行校验。

使用  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
        ">
时间: 2024-10-17 05:11:16

【javaweb学习】XML和约束模式的相关文章

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

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

2015-12-27 文件名    student.xml 1 <?xml version="1.0" encoding="GB2312" standalone="no"?> 2 <!--大家好,我是注释--> 3 <!--2015.12.27--> 4 <!DOCTYPE students SYSTEM "student.dtd"> 5 <!--这里没写盘符,及表示当前目

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

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

javaweb学习总结(二十一)——JavaWeb的两种开发模式【转】

原文 地址:http://www.cnblogs.com/xdp-gacl/p/3908610.html SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(j

JavaWeb学习总结第一篇--初识JavaWeb

JavaWeb学习总结(一)-- 初识JavaWeb 一:Web相关概念 Web程序也就是一般所说的网站,由服务器.客户端浏览器和网络组成.Web程序的好处就是使用简单,不需要安装.学习,有一台电脑.一根网线就可以使用. 1:应用程序的两种模式:B/S和C/S C/S是客户端(Client)/服务器端(Server)应用程序,也就是说这种应用程序一般独立运行.而B/S就是浏览器端(Browser)/服务器端(Server)应用程序,这种应用程序一般借用IE.火狐等浏览器来运行.Web应用程序一般

JavaWeb学习总结-01 JavaWeb开发入门

一 基本概念 1 Web开发的相关知识 Web,表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同. 静态web资源开发技术:HTML 常用动态web资源开发技术:JSP/Servlet.ASP.PHP等 在Java中,动态web资源开发技术统称为J

JavaWeb学习日记----XM第二天

1.XML基础: XML全称为eXtensible Markup Language;即可扩展标记型语言,同HTML一样使用标签来操作.它的可扩展性体现在标签可以由自己定义,可以是中文标签. XML用途: 同HTML一样可用于显示数据,但是不是XML的主要用途.XML我们多用来存储数据. 应用: 1).不同应用之间数据的传输,利于程序之间的维护 2).用来表示生活中具有层级关系的数据 3).多用于文件配置 XML语法: 1).XML的文档声明: 创建一个文件,后缀名为.xml 在写XML之前,首先

JavaWeb学习——了解Servlet

JavaWeb学习——了解Servlet 摘要:本文主要学习了什么是Servlet,以及如何使用Servlet进行开发. 基础知识 背景 随着互联网技术的发展,基于HTTP和HTML的web应用急速增长.早期的web应用主要用于浏览新闻等静态页面,用户通过HTTP协议请求服务器上的静态页面,服务器上的web服务器软件接收到请求后,读取URI标示的资源,再加上消息报头发送给客户端浏览器,浏览器负责解析HTML,将结果呈现出来. 然而随着时间发展,用户已经不满足于仅浏览静态页面.用户需要一些交互操作

javaweb学习之Servlet开发(二)

javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: 1 <servlet> 2 <servlet-name>ServletConfigDemo1</servlet-name> 3 <servlet-class>gacl.servlet