JavaWeb学习笔记之XML(1)
相关知识:https://blog.csdn.net/mokexfdgh/article/category/8092196
XML
表单提交方式
提交方式:
<form id="form1">
<input type="text" name="username" />
<!-- 第一种submit -->
<input type="submit" />
<!-- 第二种button -->
<input type="button" value="提交" onclick="form1();" />
<script type="text/javascript">
function form1(){
var form1 = document.getElementById("form1");
form1.action = "hello.html";
form1.submit();
}
</script>
<!-- 第三种超链接 -->
<a href="hello.html?username=123456">提交</a>
</form>
输入项常用的事件属性:
onclick:鼠标点击事件
onchange:改变内容(一般在select使用)
onfocus:得到焦点
onblur:失去焦点
<input type="text" id="id1" name="test" value="please input" onfocus="focus1();" onblur="blur1();" />
<script type="text/javascript">
function focus1(){
var input1 = document.getElementById("id1");
input1.value = "";
}
function blur1(){
var input1 = document.getElementById("id1");
input1.value = "please input";
}
</script>
XML的介绍
xml:eXtensible Markup Language(可扩展标记型语言)
与hmtl都是标记型语言,可以使用标签操作,而xml的标签可以自己定义,且可以使用中文标签
用途:可以与html一样用于显示数据,还可以存储数据(主要)
XML的应用
适用场景:
1.不同的系统之间传输数据
早期消息的传输是直接使用字符串,可读性差且不利于维护
2.用来表示生活中有关系的数据
3.文件配置(连接数据库时修改数据库的信息只需要修改配置文件)
XML的语法
1.xml的文档声明(必须要有,用于表示写的时xml的内容)
文件的后缀名为.xml
<?xml version="1.0" encoding="gbk" ?>
属性:version:版本号,encoding:xml的编码,standalone:文档是否独立或依赖其它文件(yes/no)
注:必须写在第一行第一列
2.定义元素(标签)
标签命名规则:
①可以是中文
②xml代码区分大小写
③不能以数字,下划线,xml,XML,Xml开头
④不能包含空格或者冒号
<person></person>//有开始有结束
<aa/>//标签没有内容
<a><b></b></a>//标签的嵌套
注:只能有一个根标签,其它标签都在根标签中,同时xml中的空格和换行都会被当成内容来解析
3.定义属性
属性定义的要求:
①一个标签上可以有多个属性
②属性名称不能相同,且命名规则同标签的定义规则
③属性和属性值之间同html一样
4.注释:写法和html一样(不能嵌套)
5.特殊字符:需要转义,和html一样
6.CDATA区
用途:可以解决多个字符都需要转义的操作
语法:
<![CDATA[ 内容 ]]>
7.PI指令
用途:用来指挥软件如何解析XML文档,可以在xml设置样式
语法:
<?xml-stylesheet type="text/css" href="css的路径"?>
注:只对英文标签名称起作用,而对中文标签不起作用
XML的dtd约束
由于xml的标签是自定义的,所以有可能回出现不属于此标签的子标签的出现,所以需要约束xml中只能出现的元素
两种约束的技术:dtd约束和schema约束
注:浏览器只会负责打开xml文件并校验xml语法,不负责校验约束.要校验xml的约束,需要使用myeclipse工具.
用法:
①创建一个后缀名为.dtd的文件
②xml中有多少个元素就在dtd文件中写几个<!ELEMENT>
③判断元素是简单元素(没有子元素)还是复杂元素(有子元素)
简单元素:<!ELEMENT 元素名 (#PCDATA)>
复杂元素:<!ELEMENT 元素名称 (子元素)>
④xml页面引入dtd文件(三种方式)
<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径"><!-- 使用外部的dtd文件 -->
<!DOCTYPE 根元素名称 [
<!ELEMENT 元素名 (#PCDATA)>
<!ELEMENT 元素名称 (子元素)>
]><!-- 使用内部的dtd文件(写在xml中) -->
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL"><!-- 使用网络上的dtd文件 -->
dtd文件的使用规则(元素的定义):
简单元素:<!ELEMENT 元素名 约束>
(#PCDATA):约束该元素是字符串类型
EMPTY:元素为空(没有内容)
ANY:任意内容
复杂元素:<!ELEMENT 元素名称 (子元素名1,子元素2,…)>
子元素名+:该子元素可以出现一次或多次,默认只能出现一次
子元素名?:该子元素可以出现零次或者一次
子元素名*:该子元素可以出现零次或多次
注:
xml中的子元素的顺序必须和dtd文件中子元素名的顺序一样//(子元素名1,子元素2,…)
xml中的子元素只能出现dtd文件中子元素的任意一个//(子元素名1|子元素2|…)
dtd定义元素的属性:
语法:
<!ATTLIST 元素名称
属性1名称 属性类型 属性的约束
属性2名称 属性类型 属性的约束
...
>
属性类型:
①CDATA->字符串
<!ATTLIST 元素名称
属性名称 CDATA #REQUIRED
>
<!-- #REQUIRED表示这个类型必须要出现 -->
②枚举
<!ATTLIST 元素名称
属性名称 (A|B|C) #REQUIRED
>
③ID->值只能是字符或者下划线开头
<!ATTLIST 元素名称
属性名称 ID #REQUIRED
>
属性的约束:
#REQUIRED->属性必须存在
#IMPLIED->属性可有可无
#FIXED->属性是一个固定值
<!ATTLIST 元素名称
属性名称 CDATA #FIXED "ABC"
>
<!-- 属性值必须为ABC -->
直接值->不写属性则直接使用直接值,写了属性则用写的属性值
<!ATTLIST 元素名称
属性名称 CDATA "DEF"
>
定义实体:
<!ENTITY 实体名称 "实体的值"><!-- 定义在内部dtd,写在外部dtd文件有些浏览器得不到内容 -->
<name>&实体名;</name><!-- 实体的使用 -->
schema约束
1.该约束特点
schema符合xml的语法,xml语句,schema语法更加复杂
一个xml可以有多个schema,多个schema使用名称空间来区分(类似于包名)
dtd里面只有PCDATA类型(字符串类型),而在schema里面可以支持更多的数据类型(比如整数类型)
2.用法
①创建一个后缀名为.xsd的文件(可以用myeclipse创建)
②xml中有多少个元素就中写几个<element>
③将简单元素写在复杂元素里
④在被约束文件里面引入约束文件
schema约束文件:
<?xml version="1.0" encoding="UTF-8">
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www/itcast.cn/20151111"
elementFormDefault="qualified">
<!-- xmlns->当前xsd文件是一个约束文件
targetNamespace->被约束xml文件通过此地址引入约束文件
-->
<element name="person"><!-- 复杂元素person -->
<complexType>
<sequence>
<!-- sequence->子元素是有顺序的
all->相同名称的子元素只能出现一次
choice->只能出现约束文件中子元素其中的一个
-->
<element name="name" type="string" maxOccurs="unbounded"></element>
<!-- 复杂元素中的子元素
maxOccurs="unbounded"->表示此子元素的出现次数无限制
-->
<element name="age" type="int"></element>
</sequence>
<attribute name="id1" type="int" use="required"></attribute>
<!--
name->属性名称
type->属性类型
use->属性是否必须出现,requried
-->
</complexType>
</element>
</shema>
被约束的xml文件:
<?xml version="1.0" encoding="UTF-8">
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www/itcast.cn/20151111"
xmlns:dept="http://www.exaple.org/department"
xsi:schemaLocation="http://www/itcast.cn/20151111 1.xsd http://www.example.org/department 2.xsd">
<!-- xmlns:xsi->当前xml文件是一个被约束文件
xmlns->约束文档里面的targetNamespace
xmlns:dept->另一个约束文件
xsi->名称空间,targetNamespace+空格+约束文档的路径
-->
<name>zhangsan</name>
<dept:name>xxx</name><!-- dept约束文件中的name -->
<age>20</age>
</person>