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

MyEclipse8.5

1、配置workspace ----- 建议不要采用含有空格和中文目录,所有代码保存workspace空间中

2、新建工程时,设置工程需要jre环境

MyEclipse提供多种内置layout --- 每种布局 界面不同,菜单不同

工程的属性

编码集 --- 导入其它工程时,注意编码类型一致

java build path 设置 classpath位置 ,指定当前工程引入类库

source中指定.java 文件 和.class文件 存放位置

librialies 指定当前工程引用类库

Java Compiler 指定 .java 采用 那个 版本 编译 .class文件 ----- 编译器版本

当jre版本低于编译器版本 : Bad version number in .class file

3、对已经存在工程进行分组 working set,通过分组隐藏不需要使用工程

4、快捷键

alt+/  Content Assist模板键  --- 将代码快速补全  ---- windows 首选项 java editor templates

ctrl+1 Quick Fix快速修复  提供代码修改建议

* 使用alt+/ 无反应 修改快捷键设置  window首选项 general --- keys

* 设置代码 保存时进行格式化 windows首选项 java -editor - save actions

程序调试

java程序员核心能力 --- 代码Debug能力

1、当代码出错了 ---  查看错误信息 --- 找到错误发生位置

* 从上向下找第一行你写的程序

2、根据经验猜测错误原因

通过sysout或者日志技术 打印关键数据信息到控制台

通过Eclipse自带断点调试功能,查看关键位置数据 ----- 断点调试 Break Point  ----- 程序通过Debug as 运行

* F5和F7 一起使用,查看具体代码实现  F6 单独使用直接跳到代码下一行  右键变量--watch  断点调试完--记得清除断点

F3 查看类代码

F4 查看类继承关系

关于代码测试工作 ----- 测试:白盒测试和黑盒测试

白盒测试测试代码结构和逻辑(可见代码测试),黑盒测试测试代码功能和性能(不可见代码测试)

* 白盒测试局限性 1、白盒测试不可能测试所有代码 2、白盒测试难度比较高  ---- 白盒测试交给软件开发工程师自己测

单体测试是一种白盒测试,测试代码功能模块 -- 测试代码单个功能

junit 是java 的单体测试技术

1、编写junit 在工程引用junit 类库

2、编写单体测试用例

* 创建public void 无参数的方法 、在方法前添加@Test 注解

3、每个测试方法 相当于以前编写main 函数,每个测试方法可以单独执行

在使用junit进行测试当方法非常多,每个方法输出内容到控制台,人们无法通过人工进行检查

* 自动化结果检查 --- 断言 Assert 

断言原理:调用方法,调用方法前,准备测试数据、测试数据运行结果 ------ 比较实际结果与预期结果是否相同

* 编写单体测试时,不要仅测试正确的数据和结果,测试不正确数据(非法数据)

XML简介

XML技术:与数据相关技术,在企业中xml技术常用来存储数据和传输数据 ,流行原因 -----
xml与任何编程语言无关

xml 可用于 php、java、.net 任何编程语言

* 通过标签来 标记数据

什么是标记语言?

<xxx>aaa</xxx> 典型标记语言 HTML ---- 用标记 修饰文本信息

XML标记随意定义 --- 可扩展

XML典型存储和传输应用:

1、XML 充当数据库 保存数据信息 --- 试题采用xml保存的 、google 数据信息通过xml格式保存

2、在AJAX传输数据 、WebService技术 网络中传输数据时,格式采用xml

在HTML中预定义了很多标记,每个标记都有相应显示效果,xml所有标记没有被预定义

在xml中 <name>HLG</name> ----  想确定name标记含义 ,需要对xml 添加约束

XML语法

1、文档声明

2、元素

3、属性

4、注释

5、CDATA块

6、处理指令

任何xml必须具备文档声明 <?xml version="1.0" ?>

XML是一种标记语言 存储和传输数据 --- 保存数据内容

没有指定xml 编码集 --- 默认采用ISO-8859-1 编码 (不支持中文数据)

* 注意问题 当xml 指定encoding="utf-8" 是浏览器查看编码集  ------ 浏览器查看编码集必须要和文件保存编码集一致

* 新建记事本程序采用系统默认编码集 --- 默认编码集gbk ---- 使用utf-8编码 另存为

当声明standalone = "yes" 该xml是独立xml 不依赖外面其它文件,standalone = "no" 该xml 依赖外部一些文件

XML 通过元素描述复杂关系模型数据

XML语法规范

1、所有xml元素必须结束

<abc></abc> ----- 在xml 文件中如果标签中没有内容 自结束 <abc />

2、标签不允许交叉嵌套

3、有且仅有一个根元素

4、xml文件中 空格和换行 会被解析器进行解析的

5、严格区分大小写,元素和属性名称不能以数字开始

属性定义语法 <元素名称 属性名称="属性值" 属性名称="属性值" ....>

一个元素定义多个属性的,每个属性值必须使用单引号和双引号

6、属性的值必须用单引号或者双引号 引起来

7、xml注释与html注释相同 <!-- --> 注释不能嵌套

CDATA区域内 保留不被解析器解析的内容 ----通常存放特殊代码,这些代码造成xml格式混乱  语法: <![CDATA[内容]]>

CDATA和转义字符在哪些情况使用?区别?

* 优先使用CDATA XML技术存储数据,传输数据、解析数据

8、通过PI指令控制xml显示样式 (指令之前不能有注释)--- 处理指令用来指挥解析XML文档内容

当xml 使用pi指令 引用CSS(XML文档中使用xml-stylesheet指令通知XML解析引擎,应用css文件显示xml文档内容)--- 效果等同于HTML,进行页面数据展示

<?xml-stylesheet type="text/css" href="1.css"?> --- 处理指令必须以"<?"开头,"?>"结尾,XML声明语句就是最常见的一种处理指令 --- <?xml version="1.0" encoding="UTF-8"?>

* 通过xml进行显示数据 ,通过XSLT 修饰xml数据显示 (类似CSS) 例如<xsl:for-each>元素 详情见W3C开发文档

XML 技术应用 两大类

1、传输和存储数据 ----- 程序员为了简化开发,不对xml使用约束技术

* 不使用xml约束技术,xml 格式不一定正确

* 所有xml 数据内容生成,解析过程 都是通过程序来完成的

2、使用xml 作为配置文件

Android SSH ----- 程序员为了保证xml元素准确性,通常xml文档使用约束技术的

什么是xml约束?在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。

3、为什么xml使用约束? 使用了约束的xml文档 --- 元素内容格式更加规范

如果企业中有的xml没有使用约束 ------ 通过程序生成xml和解析xml时,不使用约束,代码更加简单

4、XML约束技术 DTD 和 Schema

DTD技术快速入门

1、编写数据xml --- books.xml

2、编写dtd文件

* 为文档每一个元素(不同名称) <!ELEMENT

语法 <!ELEMENT 元素名称 子元素>

如果元素内部是文本 --- #PCDATA

3、将xml文件与dtd文件关联起来

DTD与xml关联三种方式:

1、内部DTD ----- 语法 <!DOCTYPE 根元素 []>

2、外部DTD (引用本地DTD) ----- 语法 <!DOCTYPE 根元素 SYSTEM "本地DTD文件位置" >

3、公共DTD (引用网络上DTD)  <!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">

* 公共DTD 使用 名称 W3C规范官方组织规定的

元素(ELEMENT)定义:

* 内容特定符号含义

() 子元素、分组

, 代表子元素顺序

+ * ?  ---- 正则表达式 + 1到多个 、* 任意个(0到多个)、 ? 0或者1个

| 多选一 ---- <!ELEMENT book (name,(price|number))>

特殊元素内容:文本类型内容 #PCDATA  子元素内容如果为空 EMPTY

属性(ATTLIST)定义:

语法:<!ATTLIST 元素名称 属性列表 >

属性列表:

属性名称 类型 约束

属性名称 类型 约束

属性名称 类型 约束

属性名称 类型 约束

属性类型:

1、CDATA 文本类型属性

2、(值1|值2|值3 ) 三个值选一个

3、ID 表示属性值唯一 类似于数据库中的索引要是唯一的 --- 并且ID属性值不能以数字开始

约束:

1、#REQUIERD 属性必须

2、#IMPLIED 属性可选

3、fixed value 属性值固定

4、default 默认值

举例:

<!ATTLIST book

bid ID #REQUIRED

author (金庸|古龙) "金庸"

>

<book bid="b100" author="古龙"></book>

<book bid="b200"></book>

实体(ENTITY)定义:

对于xml数据内容重复,可以抽取实体

实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了

语法:<!ENTITY 实体名称 "实体内容" >

引用方式:&实体名称;

举例:

<!ENTITY itcast "传智播客">

<book>

<publish>&itcast;</publish>

</book>

<book>

<publish>&itcast;</publish>

</book>

代码示例:

books.dtd:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (book)>
<!ELEMENT book (name,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>

books.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "books.dtd">
<books>
	<book>
		<name>java高效编程</name>
		<price>100</price>
	</book>
</books>

book2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 使用内部DTD约束XML [] 内部编写DTD内容-->
<!DOCTYPE books [
	<!ELEMENT books (book+)>
	<!ELEMENT book (name,(number|price),publish)>
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT price EMPTY>
	<!--ID属性 不能以数字开始 -->
	<!ATTLIST book
		bid ID #REQUIRED
		author (金庸|古龙) "金庸"
	>
	<!ELEMENT publish (#PCDATA) >
	<!-- 将公共的重复内容 提取实体-->
	<!ENTITY itcast "传智播客 JavaEE" >
]>
<books>
	<book bid="b100" author="古龙">
		<name>java</name>
		<price />
		<publish>&itcast;</publish>
	</book>
	<book bid="b200">
		<name>java</name>
		<price />
		<publish>&itcast;</publish>
	</book>
</books>

XML Schema

使用一套预先定义好元素和属性 开发的

----- 预先定义好元素和属性 规定了schema 结构和内容

----- 定义schema 规定xml文档 格式和内容

步骤:预先已经定义好元素和属性 ------> 定义schema  -------> 定义xml实例

Schema本身也是xml ,不像DTD使用单独语法

将schema中定义元素,绑定URI地址(名称空间)上,用来唯一标识元素来自哪个schema 。

* 为什么要有名称空间? 一个xml实例 引用多个Schema ,当两个schema定义同名元素,为了区分同名元素引用自哪个文档。

Schema快速入门

1、编写数据xml文件

2、编写schema文件 .xsd

1) 引入 W3C 名称空间 xmlns="http://www.w3.org/2001/XMLSchema"

每一个元素 对应一个 <element name="" type=""> --- 对于简单元素,可以编写type属性

区分复杂元素和简单元素 --- 包含子元素或者属性的元素叫做复杂元素 --- <complexType></complexType>

强调子元素出现顺序 --- <sequence></sequence>

引用任何一个元素 --- <any></any>

为element元素添加属性 --- <attribute name="" type=""></attribute>

例如:

<element name="employee">

<complexType>

<sequence>

<any></any>

<element name="name" type="string"></element>

</sequence>

<attribute name="age" type="int"></attribute>

</complexType>

</element>

2) 为schema定义元素指定名称空间 URI (URI可以是任何路径)--- targetNamespace="http://www.itcast.cn/books"

----- 想让xml实例使用schema中定义的元素,需为定义的元素指定名称空间

3、在xml实例数据文件中 ,引用自定义Schema --- xmlns="http://www.itcast.cn/books"

4、声明xml文件是一个应用了schema技术的实例 --- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

5、指定schema文件的位置 --- xsi:schemaLocation="名称空间 schema文件位置" --- xsi:schemaLocation="http://www.itcast.cn/books books.xsd"

注解

elementFormDefault="unqualified"

1、如果schema 将 elementFormDefault="unqualified" ,xml 实例文档 引用名称空间必须使用前缀 ---- 前缀修饰根元素

2、当前xml实例文档所有子元素必须不能用前缀

elementFormDefault="qualified"

1、xml 实例文档 所有元素 要么都用前缀,要么都不用前缀

2、一般我们都使用qualified

名称空间 作用 --- 唯一标识schema当中定义元素

注意:名称空间的名字语法容易让人混淆,尽管以http://开始,但是那个URL并不指向一个包含模式定义的文件。

事实上,这个URL:http://www.itcast.cn根本没有指向任何文件,只是一个分配的名字

名称空间可以使用任意的字符串,但是习惯上我们是使用http://前缀的。

简单元素 直接编写type属性 、复杂元素 <complexType>

代码示例:

books.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
   targetNamespace="abcdefg"
   elementFormDefault="qualified"
>
    <!-- 每一个元素 对应 element -->
	<element name="books">
		<!-- 包含子元素和属性的元素  复杂元素 -->

        <complexType>
			<!-- 强调子元素出现顺序 -->
			<sequence>
				<!-- 让book元素出现多次 *  -->
				<element name="book" minOccurs="0" maxOccurs="unbounded">
					<complexType>
						<sequence>
							<!-- 对于简单元素,编写type属性  -->
							<element name="name" type="string"></element>
							<element name="price" type="double"></element>
						</sequence>
					</complexType>
				</element>
			</sequence>
		</complexType>
    </element>
</schema>

books.xml:

<?xml version="1.0" encoding="UTF-8"?>
<abc:books xmlns:abc="abcdefg"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="abcdefg books.xsd"
>
	<abc:book>
		<abc:name>Core Java</abc:name>
		<abc:price>100</abc:price>
	</abc:book>
	<abc:book>
		<abc:name>think in java</abc:name>
		<abc:price>90</abc:price>
	</abc:book>
</abc:books>

company.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/company"
elementFormDefault="qualified">
	<element name="company">
		<complexType>
			<sequence>
				<element name="employee">
					<complexType>
						<sequence>
							<!-- 引用任何一个元素 -->
							<any></any>
							<!-- 员工名称 -->
							<element name="name">
								<complexType>
									<simpleContent>
										<extension base="string"></extension>
									</simpleContent>
									<attribute name="salary" type="double"></attribute>
								</complexType>
							</element>
						</sequence>
						<!-- 为employee元素添加属性 -->
						<attribute name="age" type="int"></attribute>
					</complexType>
				</element>
			</sequence>
		</complexType>
	</element>
</schema>

department.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://www.example.org/department"
 elementFormDefault="qualified">
 <!-- 部门名称 -->
 <element name="name" type="string"></element>
</schema>

company.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 数据文件 引用多个Schema -->
<company xmlns = "http://www.example.org/company"
	xmlns:dept="http://www.example.org/department"
	xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd"
>
	<employee age="30">
		<!-- 部门名称 -->
		<dept:name>人力资源部</dept:name>
		<!-- 员工名称 -->
		<name salary="3000">王晓晓</name>
	</employee>
</company>

时间: 2024-10-28 09:37:14

JavaEE实战——XML语法和约束技术的相关文章

XML语法与约束

1.开发工具介绍 1.开发工具 JDK eclipse(真正开发的用的是eclipse)----IBM发布 eclipse可以添加很多的插件(添加自己需要的插件) myeclipse已经添加了很多的插件(收费) 2.myeclipse视图恢复最原始的样子(重置视图) window--> Reset Perspective 3.切换视图 4.创建工程导入自定义安装的JDK 添加 5.修改快捷键 window--> preferences--> General--> Keys-->

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】Schema--- xml的约束技术

Schema 是xml的约束技术,出现的目的是为了替代dtd 本身也是一个xml,非常方便使用xml的解析引擎进行解析 对名称空间有非常好的支持 支持更多的数据类型,并且支持用户自定义数据类型 可以进行说语义级别的限定,限定能力大大强于dtd 相对于dtd不支持实体 相对于dtd复杂的多,学习成本比较的高 快速入门 自身是一个xml文件,扩展名是 .xsd 一个xml Schema通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档 和xml文件一样,一个xml Schem

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(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

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

下载SPSS Modeler数据挖掘项目实战(数据挖掘、建模技术)

SPSS Modeler是业界极为著名的数据挖掘软件,其前身为SPSS Clementine.SPSS Modeler内置丰富的数据挖掘模型,以其强大的挖掘功能和友好的操作习惯,深受用户的喜爱和好评,成为众多知名企业在数据挖掘项目上的软件产品选择. SPSS Modeler数据挖掘项目实战(数据挖掘.建模技术),刚刚入手,转一注册文件,视频的确不错,可以先下载看看:http://pan.baidu.com/s/1cmkdkU 密码:vqws