JAVAWEB第五天XML简介及语法
来源:互联网 发布:道路测量员软件说明书 编辑:程序博客网 时间:2024/05/19 03:28
一、XML简介
1.eXtensible Makeup Language:可扩展标记性语言
XML和HTML一样都是标记性语言,使用标签来进行操作,但HTML里面的标签是固定的,XML的可扩展则是体现在可以自定义。
2.用途
HTML用于显示数据,XML也可以显示数据,但不是其主要功能,主要功能是存储数据。
有两个版本,1.0和1.1,但是我们用的是1.0。
3.XML的应用
不同的系统之间传输数据
用来表示生活中有关系的数据
经常用在配置文件
二、XML的语法
1.XML的文档声明
—创建一个文件,后缀名为.xml
—如果写XML,第一步,必须要有一个文档声明(证明这是一个XML文件)
<?xml version="1.0" encoding="gbk"?>
—文档声明必须是第一行第一列,前面不能有空格
—XML的编码有gbk和utf-8和iso8859-1(不包含中文)
—对于乱码,在保存时文件默认的格式和文档中定义的相同
2.定义元素(标签)
—标签定义有开始必须要有结束:<person></person>
—如果标签内没有内容,可以在标签内结束:<aa/>
—标签可以嵌套,但是必须合理嵌套
—一个xml中只能有一个根标签,其他的标签都嵌套在这里面
—在XML中会把空格和换行当初代码来解析,下面两个代码是不同的
<person>我是一个人</person><person> 我是一个人</person>
—XML标签的命名规则:(1)、区分大小写 (2)不能以数字或者下划线开头 (3)不能以xml、XML等各种形式的开头 (4)标签 内不能包含空格和冒号
3.定义属性
—xml是标记性文档,也会有属性
—一个标签内可以有多个属性,但是属性的名字不能相同,即不能全部都写成
<person id="aa", id1="bb">我是一个人</person>不能写为<person id="aa", id="bb">我是一个人</person>
—属性与属性值之间使用=,属性值必须要用引号括起来(单引号双引号均可)
—属性的命名规范和标签的相同
4.注释
<!-- xml的注释内容 -->
—注释不能嵌套,快捷键是ctrl+shift+/
5.特殊字符
—如果要将特殊字符直接写到xml中,需要用转义字符
<panduan>a>b</panduan>这样写是错误的<panduan>a>b</panduan>
—常用转义字符有<:<
>:>
&:&
":"
':&qpos;
6.CDATA区
如果有很多的内容含有特殊字符,可以将其放到一个CDATA区中,这样就可以不必使用转义字符进行转义
写法:<![CDATA[内容]]>
<![CDATA[<b>if((a>b)&&(b>c)&&(c<d))</b>]]>
7.PI指令
—是处理指令,可以在xml中设置样式,但是基本不用,因为xml的功能不是主要用于显示数据的
<?xml-stylesheet type="text/css" href="css路径"?>
三、xml的约束
1.为什么要定义约束?
比如定义了一个person的xml文件,想要里面仅仅放入人的属性,但是如果在里面写一个猫的属性,系统并不会报错,因为符合语法规范,所以此时需要设置约束。
xml的约束技术有:dtd约束和schema约束
2.dtd快速入门
一个xml文件代码如下:
<?xml version="1.0" encoding="gbk"?><person> <name>liqing</name> <age>21</age></person>
—创建一个文件名,后缀为.dtd
步骤:(1)看xml文件中有多少元素,有几个元素,就在dtd文件中写几个<!ELEMENT>
,对于上述来说是3个
(2)判断元素是复杂元素还是简单元素
—复杂元素:有子元素的元素
<!ElEMENT 元素名称(子元素)> <!ELEMENT person(name,age)>
—简单元素:没有子元素的元素
<!ElEMENT 元素名称 (#PCDATA)><!ELEMENT name (#PCDATA)>注意:空格。<!ELEMENT age (#PCDATA)>name和age之后都有一个空格
(3)在xml中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">注意空格和大小写<!DOCTYPE person SYSTEM "1.dtd">
3.dtd的引入方式
(1)引入外部的dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">
(2)使用内部的dtd文件
<!DOCTYPE person(根元素名称)[ <!ELEMENT person (name,age)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)>]>
(3)使用外部的dtd文件,使用网络上的一些dtd文件
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文档的URL">
—后面学到的框架会使用到
四、使用dtd定义元素
语法:
<!ELEMENT name (#PCDATA)><name>liqing</name>(#PCDATA):表示name是字符串类型
<!ELEMENT sex EMPTY><sex></sex>EMPTY:表示元素为空(没有内容)
<!ELEMENT school ANY>ANY:可以为任意,可以空,也可以不为空
2.复杂元素的约束
<!ElEMENT 元素名称(子元素)> <!ELEMENT person(name,age,sex,school)> ---这样写表示每个元素只能出现一次
如果出现多次,则需要使用以下符号(英文状态下)
+:一次或者多次?:0次或者一次*:任意次,0次或者多次
<!ELEMENT person (name+,age,sex,school)><person> <name>liqing</name> <name>li</name> <name>qingqing</name> <age>21</age> <sex></sex> <school>school</school></person>
子元素之间使用的符号意义
,(逗号):表示必须按照写的顺序来<name>liqing</name><age>21</age><sex></sex><school>school</school>|(竖线):表示只能出现其中的任意一个子元素<age>21</age>
五、使用dtd定义属性
语法:
<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>注意:属性名称和属性类型以及属性的约束之间必须要有空格
属性的类型有三种:
(1)CDATA:表示字符串
<!ELEMENT birthday (#PCDATA)><!ATTLIST birthday ID1 CDATA #REQUIRED><birthday ID1="AAA">2015</birthday>
(2)枚举:表示只能在指定范围内出现值,但是只能每次出现一个
<!ELEMENT age (#PCDATA)><!ATTLIST age ID2 (AA|BB|CC) #REQUIRED><age ID2="AA">21</age>
(3) ID:值只能以字母或者下划线开头,值得是属性的值
<!ELEMENT name (#PCDATA)> <!ATTLIST name ID3 ID #REQUIRED > <name ID3="A1">liqing</name>
属性约束:
(1)#REQUIRED:属性必须要存在,不写会报错
(2)#IMPLIED:属性可有可无
(3)#FIXED:表示一个固定值,如果设置属性的值,必须是你dtd里面设置的
<!ELEMENT sex EMPTY> <!ATTLIST sex ID4 CDATA #FIXED "AAA" > <sex ID4="AAA"></sex>
(4)直接值:如果在dtd里面设置了,但是在xml中没有设置,则xml中会默认使用dtd中设置的,如果xml中另设置值,则使用xml中设置的
<!ELEMENT school ANY> <!ATTLIST school ID5 CDATA "VVV" > <school>school</school> 或者按照下面的 <school ID5="TTT">school</school>
六、实体的定义
定义实体时需要写在内部dtd中,如果写在外部dtd中,在某些浏览器下可能不会实现
语法:
<!ENTITY 实体名称 实体的值>使用实体:&实体名称;
<!ENTITY TEST "LIQING"><name ID3="A1">&TEST;</name>在浏览器显示时会显示<name ID3="A1">LIQING</name>
七、以上全部代码
<?xml version="1.0" encoding="UTF-8"?><!-- <!DOCTYPE person SYSTEM "1.dtd"> --><!DOCTYPE person[ <!ELEMENT person (name+,age?,sex*,school,birthday)> <!ELEMENT name (#PCDATA)> <!ATTLIST name ID3 ID #REQUIRED > <!ELEMENT age (#PCDATA)> <!ATTLIST age ID2 (AA|BB|CC) #REQUIRED > <!ELEMENT sex EMPTY> <!ATTLIST sex ID4 CDATA #FIXED "AAA" > <!ELEMENT school ANY> <!ATTLIST school ID5 CDATA "VVV" > <!ELEMENT birthday (#PCDATA)> <!ATTLIST birthday ID1 CDATA #REQUIRED > <!ENTITY TEST "LIQING">]><person> <name ID3="A1">&TEST;</name> <age ID2="AA">21</age> <sex ID4="AAA"></sex> <school>school</school> <birthday ID1="AAA">2015</birthday></person>
八、案例
TV.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE TVSCHEDULE SYSTEM "TV.dtd"><TVSCHEDULE NAME="CCTV"> <CHANNEL CHAN="CCC"> <BANNER>AAA</BANNER> <DAY> <DATE>2015-11-11</DATE> <HOLIDAY>SSSS</HOLIDAY> </DAY> <DAY> <DATE>2015-12-12</DATE> <PROGRAMSLOT VTR="SSS"> <TIME>1990</TIME> <TITLE>TEST</TITLE> </PROGRAMSLOT> </DAY> </CHANNEL></TVSCHEDULE>
TV.dtd
<!ELEMENT TVSCHEDULE (CHANNEL+)><!ELEMENT CHANNEL (BANNER,DAY+)><!ELEMENT BANNER (#PCDATA)><!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)><!ELEMENT HOLIDAY (#PCDATA)><!ELEMENT DATE (#PCDATA)><!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)><!ELEMENT TIME (#PCDATA)><!ELEMENT TITLE (#PCDATA)> <!ELEMENT DESCRIPTION (#PCDATA)><!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED><!ATTLIST CHANNEL CHAN CDATA #REQUIRED><!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED><!ATTLIST TITLE RATING CDATA #IMPLIED><!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
- JAVAWEB第五天XML简介及语法
- JAVAWEB第五天xml解析
- JavaWeb基础学习第五天
- java入门 第五天之作业答案 及 接口 简介
- javaWeb-xml语法详解
- javaweb之xml语法
- 方立勋JavaWeb学习笔记第五天
- javaweb学习笔记(一)-xml概述及语法
- 02-JavaWeb-XML-xml语法-DTD语法
- 第五天数组及字符串
- 基础加强第五天 XML练习
- .NET基础加强第五天(XML文档)
- xml简介与语法
- 【javaWeb第五天】-密码学基础和tomcat的https连接器
- ReactNative ES6简介 及基本语法第一篇
- 【javaWeb第三天】-XML技术
- Java学习第五天及基础知识回顾
- jQuery简介及语法
- ELK第七篇:spring-boot-starter-data-elasticsearch使用
- 分布式环境指挥官Zookeeper—架构师必备技能分布式锁解密
- spring中手动实现AOP编程
- 解决ubuntu下make menuconfig错误问题
- 8.2
- JAVAWEB第五天XML简介及语法
- hadoop39
- MVP+EventBus+refits+recyclerview+frsco+粘性
- C++11中容器迭代器操作总结
- 自顶向下,逐步求精
- DML、DDL的概念与区别
- numpy meshgrid和stack函数的使用
- 《Discrete Mathematic with Applications》读书笔记四
- SSH框架--struts2浅析《二》之配置文件