XML语法与约束

1.开发工具介绍

1、开发工具

JDK

eclipse(真正开发的用的是eclipse)————IBM发布

eclipse可以添加很多的插件(添加自己需要的插件)

myeclipse已经添加了很多的插件(收费)

2、myeclipse视图恢复最原始的样子(重置视图)

window--> Reset Perspective

3、切换视图

4、创建工程导入自定义安装的JDK

添加

5、修改快捷键

window--> preferences--> General--> Keys--> Content Assist--> Remove Binding

6、Junit测试

被测试的方法必须是:公共的、非静态、无返回值、无形参

2.xml概述

1、XML

Extensible Markup Language

可扩展标记语言

XML技术是W3C组织发布的

数据存储格式

2、作用

保存和处理数据,同时保存和处理他们之间的关系

允许用户自定义标签,用标签保存数据,标签之间有层次关系

3、特点

本质上是一段字符串,具有跨平台性的特性

经常用作应用程序配置文件

4、保存了XML数据的文件就叫做xml文件,后缀名为.xml

5、XML数据也可以以其他的方式存在(如在内存中构建XML数据),不要将XML语言狭隘的理解成xml文件。

6、浏览器内置了XML解析器,可以使用浏览器对XML进行校验

3.xml语法

一个XML文件分为如下几部分内容:

1、文档声明  <?xml version=”1.0” encoding=”GB2312” standalone=”no” ?>

声明文档基本属性,包含且只包含一个文档声明,必须处在第一行 。

version 代表当前xml所遵循的xml标准,必须存在。

encoding告知解析器使用何种编码解析当前xml,默认值为ISO8859-1

standalone指定当前XML文档是否是一个独立文档,默认值为yes表示是一个独立文档

2、元素

1.<开始标签> 标签体 </结束标签>

<自闭标签/>   ---> 不含标签体也不包含其他标签

2.有且仅有一个根标签

3.元素的命名规范:

区分大小写

不能以数字、标点符号、"_"开头。

不能以XML(或XML、或Xml 等)开头。

不能包含空格。

名称中间不能包含冒号(:)

3、属性

1.一个标签可以有多个属性

2.属性的值要用单引号或双引号括起来,属性的之中包含双引号,就要用单引号了。

3.命名规范,参照元素的命名规范

4、注释

1.注释不能出现在文档声明之前。

2.注释不能嵌套注释

5、CDATA区 、转义字符

1.都可以用来转义特殊字符。

2.CDATA区  <![CDATA[    ]]>

<![CDATA[这是要转义的内容]]>

被CDATA区扩起来的内容,将会被浏览器当作文本来处理。

3.转义字符

&  =  &

< =  <

>  =  >

"  =  "

‘ = ‘

4.CDATA区和转义字符的区别

(1)CDATA区成段转义,转义字符一次只转义一个字符

(2)CDATA区转义的字符保存数据本来的格式,只是通知解析器按文本去处理。

转义字符改变了数据本身的内容,利用其他字符替代了转义字符。

6、处理指令 PI(processing instruction)<?xml-stylesheet type=”text/css” herf=”1.css” ?>

1.一段指令通知解析器以何种方式解析XML

指定解析器使用1.css去渲染当前的XML数据

2.文档声明就是一个最常见的处理指令。

4.DTD1

1、什么是XML约束?

编写一个文档来约束一个xml文档的写法,这称之为XML约束。

2、XML约束的作用

约束xml文档的写法

对xml进行校验

3、常见的XML约束技术

XML DTD

XML Schema

4、浏览器默认关闭DTD校验

myeclipse提供校验

5、如何在XML中引入一个DTD

(1)外部引入

1.外置的dtd文件后缀必须为.dtd,必须用utf-8编码保存.

2.xml文件中使用

(1)<!DOCTYPE 根元素名称  SYSTEM 文件的位置>

<!DOCTYPE 书架 SYSTEM "book.dtd">

SYSTEM表明引入的dtd,在当前文件系统中。

(2) <!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">

<!DOCTYPE web-app PUBLIC

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

PUBLIC表明引入的dtd,在网络公共位置中.

(2)内部引入

直接在xml中书写dtd

<!DOCTYPE 根元素名称[

dtd约束....

]>

5.DTD2

(1)元素<!ELEMENT 元素名称 元素约束>

元素约束:可以是元素内容、或存放类型

1.存放类型:ANY/EMPTY

2.元素内容:子元素的列表

用小括号括起来

1.子元素之间可以使用逗号进行分割,表明子元素必须按照顺序出现

2.子元素之间可以使用竖线进行分割,表面子元素出现其中之一

3.#PCDATA 表明包含标签体

4.  + 1次或多次

* 0次或多次

? 0次或一次

5.可以使用小括号进行组的操作

<!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

(2)属性

<!ATTLIST 元素名称

属性名1属性值的类型整个属性的约束

属性名2属性值的类型 整个属性的约束

......

>

1.属性值的类型:

1.CDATA: 普通字符串

2.枚举 : 枚举列表

<!DOCTYPE 购物篮 [

<!ELEMENT 肉 EMPTY>

<!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">

]>

3.ID: 必须唯一的,

ID 属性的值只能由字母,下划线开始,不能使用数字,不能出现空白字符

4.参数实体   &实体名称

2.属性约束:

#REQUIRED 必须存在的属性

#IMPLIED一个可选的属性,可有可无

#FIXED ‘固定值‘ 具有一个固定的属性值,指定了一个不是固定值的值则校验报错

‘默认值‘ 默认属性值

<!ATTLIST 页面作者

姓名 CDATA #IMPLIED

年龄 CDATA #IMPLIED

联系信息 CDATA #REQUIRED

网站职务 CDATA #FIXED "页面作者"

个人爱好 CDATA "上网"  //上网为默认属性值

>

(3)ENTITY(实体)

<!ENTITY >,就是对一大段内容的引用,可以简化代码的复用

引用实体:在xml中引用的实体叫做引用实体

<!ENTITY 实体名称 “实体内容” >

在xml语句里,用&实体名称,代替实体内容;

参数实体:在dtd中引用的实体叫做参数实体

<!ENTITY % 实体名称 "实体内容">

在DTD语句里,用%实体名称,代替实体内容;

6.两种解析思想

利用java程序去增删改查(CRUD)xml中的数据--> xml编程

两种解析思想:

1.dom解析

1、将整个XML使用类似树的结构,保存在内存中,再对其进行操作。

2、是 W3C 组织推荐的处理 XML 的一种方式。

3、需要等到XML完全加载进内存才可以进行操作

4、耗费内存,当解析超大的XML时慎用。

5、可以方便的对xml进行增删改查操作

2.sax解析

1、逐行扫描XML文档,当遇到标签时触发解析处理器,采用事件处理的方式解析。 2、(Simple API for XML) 非官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。

3、在读取文档同时即可对xml进行处理,不必等到文档加载结束,相对快捷。

4、不需要将文档加载进内存,因此不存在占用内存的问题,可以解析超大XML。

5、只能读取XML中数据,无法进行增删改

7.sax解析_dom4j解析入门

利用这两种解析思想,实现了很多的解析api

1. sun jaxp

1、既有dom方式也有sax方式,

2、这套解析api已经加入到j2se的规范中,不需要导入任何第三方开发包就可以直接使用这种解析方式.但是这种解析方式效率低下,没什么人用.

3、jaxp 的sax解析过程:

SAXParserFactory factory = SAXParserFactory.newInstance();

SAXParser parser = factory.newSAXParser();

XMLReader reader = parser.getXMLReader();

reader.setContentHandler(new MyContentHandler2());  //注册事件处理器

reader.parse("book.xml");

1.dom4j ------你所应该知道的Dom4J.doc

1、使用dom方式高效的解析xml.

pull

2、导入开发包,通常只需要导入核心包就可以了

3、如果在使用的过程中提示少什么包到lib目录下在导入缺少的包即可

4.与JDOM不同的是,dom4j使用接口和抽象基类。

5.dom4j不能跨着级别查元素

6.dom4j的解析过程

SAXReader reader  = new SAXReader();

Document dom = reader.read("book.xml");

Element root = dom.getRootElement();

Element bookName = root.element("书").element("书名");

String bookNameText = bookName.getText();

System.out.println(bookNameText);

8.dom4j进行增删改查

public void selc_add_update_dele() throws DocumentException, IOException{

SAXReader reader  = new SAXReader();

Document dom = reader.read("book.xml");

Element root = dom.getRootElement();

List<Element> list = root.elements();//root的直系元素,这里就是书

Element book2Ele = list.get(1);//第二本书

Element book2Name = book2Ele.element("书名");

System.out.println(book2Name.getText());

//1。创建<书>下的<特价>节点,并设置标签体

Element bargainPrice1 = DocumentHelper.createElement("特价");

bargainPrice1.setText("40.00");

//2.获取父标签<书>,将<特价>节点挂上去

Element book1 = root.element("书");

book1.add(bargainPrice1);

//3.更新特价的值

bargainPrice.setText("14.00");

//4.删除特价

bargainPrice1.getParent().remove(bargainPrice1);

//写到文件中

XMLWriter xwr = new XMLWriter(new

FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());

xwr.write(dom);

xwr.close();

}

9.Schema之名称空间

简介:

1、xml的约束技术  --- 需要掌握名称空间的概念,会读简单的Schema就可以了

2、Schema是xml的约束技术,出现的目的是为了替代dtd

3、本身也是一个xml,非常方便使用xml的解析引擎进行解析,但它的扩展名通常为.xsd

优点:

4、对名称空间有非常好的支持

5、支持更多的数据类型,并且支持用户自定义数据类型

6、可以进行语义级别的限定,限定能力大大强于dtd

缺点:

7、相对于dtd不支持实体

8、相对于dtd复杂的多,学习成本比较的高

重点:

9、如何在xml中引入Schema --- !!!!!名称空间的概念:全世界独一无二的名字,用来唯一的标识某个资源,通常是公司的域名,只是名字而已并不真的表示资源的位置.

10、targetNamespace用于指定schema文档中声明的元素属于哪个名称空间。

11、elementFormDefault用于指定,该schema文档中声明的根元素及其所有子元素是否都属于targetNamespace所指定的名称空间。默认值为qualified,表示都属于指定的名称空间。若值为unqualified,表示只有根元素属于指定名称空间。

book.xsd文件:

<?xml version="1.0" encoding="UTF-8" ?>

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

  targetNamespace=“www.itcast.cn"

elementFormDefault="qualified">

<xs:element name=‘书架‘ >

<xs:complexType>

<xs:sequence maxOccurs=‘unbounded‘ >

<xs:element name=‘书‘ >

<xs:complexType>

<xs:sequence>

<xs:element name=‘书名‘ type=‘xs:string‘ />

<xs:element name=‘作者‘ type=‘xs:string‘ />

<xs:element name=‘售价‘ type=‘xs:string‘ />

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

12、schemaLocation此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置,两者之间用空格分隔。使用schemaLocation属性时,也需要指定该属性来自哪里

book.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<itcast:书架 xmlns:itcast=“www.itcast.cn”

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation=“www.itcast.cn  book.xsd">  //约束文件真正位置

<itcast:书>

<itcast:书名>JavaScript网页开发</itcast:书名>

<itcast:作者>张孝祥</itcast:作者>

<itcast:售价>28.00元</itcast:售价>

</itcast:书>

</itcast:书架>

~~~ Schema的语法---参照Schema的文档,了解即可

时间: 2024-08-09 22:03:10

XML语法与约束的相关文章

JavaEE实战——XML语法和约束技术

MyEclipse8.5 1.配置workspace ----- 建议不要采用含有空格和中文目录,所有代码保存workspace空间中 2.新建工程时,设置工程需要jre环境 MyEclipse提供多种内置layout --- 每种布局 界面不同,菜单不同 工程的属性 编码集 --- 导入其它工程时,注意编码类型一致 java build path 设置 classpath位置 ,指定当前工程引入类库 source中指定.java 文件 和.class文件 存放位置 librialies 指定当

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

Xml一(基本语法和约束)、

XML:eXtensible Markup Language 可扩展标记语言 version="1.0" * 可扩展:所有的标签都是自定义的. * 功能:数据存储 * 配置文件 * 数据传输 * html与xml区别: * html语法松散,xml语法严格 * html做页面展示,xml做数据存储 * html所有标签都是预定义的,xml所有标签都是自定义的 W3C:word wide web consortiem 万维网联盟 xml语法: * 文档声明: * 必须写在xml文档的第一

XML概念,约束文档,解析 笔记

XML的学习: 1.XML简介及语法: 2.XML的约束: DTD Schema 3.XML的解析:(*****重点) XML: What:eXtensible Markup Language(可扩展的标记语言.) <dog></dog> * HTML:超文本标记语言. 标记语言 :都会有一些标签.<html></html> <p></p> Why: * 用来处理大量有关系的数据. Where: * 用来作为软件的配置文件(SSH--

XML概念,约束文档,解析

day01总结 今日内容 l XML语法 l XML约束之DTD l XML解析器介绍 l XML解析之JAXP( DOM.SAX ) l DOM4J l Schema 一.XML语法 XML概述 1 什么是XML XML全称为Extensible Markup Language, 意思是可扩展的标记语言,它是 SGML(标准通用标记语言)的一个子集. XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C在1998年2月发布1.0版本: W3C

XML技术-Schema约束-Dom4j-Xpath详解

这辈子没办法做太多事情所以每一件都要做到精彩绝伦 People can't do too many things in my life,so everything will be wonderful   乔布斯 本文档参考资料w3cschool.CHM  API教程文档免费下载地址http://down.51cto.com/data/2300287 XML技术 1.     什么是XML XML 指可扩展标记语言EXtensibleMarkup Language XML 是一种标记语言很类似 H

JAVASE02-Unit012: Unit07: XML语法 、 XML解析

Unit07: XML语法 . XML解析 emplist.xml <?xml version="1.0" encoding="UTF-8"?> <list> <emp id="1"> <name>张三</name> <age>34</age> <gender>男</gender> <salary>3000</salary

XML(1)——shema约束之命名空间

一.XML的两种约束DTD和Schema摘自IBM官网一段话:"XML DTD(XML的文档类型定义)是近几年来XML技术领域所使用的最广泛的一种模式.但是由于XML DTD并不能完全满足XML自动化处理的要求,例如不能很好实现应用程序不同模间的相互协调,缺乏对文档结构.属性.数据类型等约束的足够描述等等,所以W3C于2001年5月正式推荐XML Schema为XML 的标准模式.显然,W3C希望以XML Schema来作为XML模式描述语言的主流,并逐渐代替XML DTD".可见Sc

16-1-8 JAVA学习笔记(1) XML语法

一.XML语法 1.xml文档声明,声明基本属性,有且只有一个文档生活,必须在最前端: <?xml version="1.0" encoding="utf-8" standalone="yes" ?>; 2.xml元素,一个xml标签就是一个xml元素,一个标签分为开始标签和结束标签,在开始标签跟结束标签间可以包含文本,文件内容成为标签体, 如果一个xml标签内不包括标签体也不包含其他元素,那么可以把开始标签跟结束标签合并,称为自闭标