课程名称:Java工程师2022版
课程章节:Java数据库开发与实战
课程讲师:IT老齐 悟空 八戒猪 神思者 Leo
课程内容:MySQL基本函数的使用
一、XML语法规范
1.XML是什么?
XML的全称是EXtensible Markup Language,可扩展标记语言。
编写XML就是编写标签,扩展.xml。
良好的人机可读性。
hr.xml
<employee>
<name>张三</name>![图片描述](//img.mukewang.com/63eea83d0001e06c14780785.png)
<age>31</age>
<height>178</height>
</employee>
2.XML的用途
Java程序的配置描述文件
<config>
<application-name>X电商平台</application-name>
<host-ip>192.168.132.56</host-ip>
<page-size>10</page-size>
</config>
可能更多的往XML文件里存放一些经常变化的内容,因为这样的话更容易修改,也避免了不断的编译Java程序。
3.XML文档结构
第一行必须是XML声明。
有且只有一个根标签。
XML标签的书写规则。
4.XML声明
XML声明说明XML文档的基本信息,包括版本号与字符集,写在XML第一行。<?xml version="1.0" encoding="UTF-8">
version 代表版本号1.0/1.1。encoding UTF-8设置字符集,用于支持中文。
5.XML必须拥有根标签
每一个XML文档必须拥有“根标签”。
标签是有上下级关系的,上级为“父标签”,下级为“子标签”。
标签也常被称为“节点”。
<?xml version="1.0" encoding="UTF-8"?>
<employee>
<name>张三</name>
<age>18</age>
<height>178</height>
</employee>
这里的employee就是XML文档的根标签。employee也是name, age, height的父标签,所以在XML中也是存在父标签和子标签的问题的,ename, age, height就是employee的子标签。
6.XML标签书写规则
合法的标签名,适当的注释与缩进,合理使用属性,特殊字符与CDATA标签,有序的子元素。
什么是合法的标签名:
a:标签名要有意义。
b:建议使用英文,小写字母,单词之间使用”-“分割。
c:建议多级标签之间不要存在重名的情况。
适当的注释与缩进可以让XML文档更容易阅读。
合理的使用属性:标签属性用于描述标签不可或缺的信息。
7.处理特殊字符
标签内容(标签体)中出现"<"等特殊字符,会破坏文档结构。
解决方案1:使用实体引用。
解决方案2:使用CDATA标签。
XML支持五种实体引用
实体引用 | 对应符号 | 说明 |
---|---|---|
<; | < | 小于 |
>; | > | 大于 |
&; | & | 和号 |
&apos; | ’ | 单引号 |
"; | " | 双引号 |
8.使用CDATA标签处理特殊字符
<exam>
<question><![CDATA[1+4<3是否正确?]]></question>
<question><![CDATA[3+5>8是否正确?]]></question>
</exam>
遇到这个标签之后,XML不会再去解析这个标签对,只会原模原样的输出。
有序的子元素:在XML多层嵌套的子元素中,标签前后顺序应保持一致。
9.在IDEA中创建第一个XML文件
<?xml version="1.0" encoding="UTF-8" ?>
<!--公司员工数据-->
<hr>
<employee no="3309">
<name>张三</name>
<age>31</age>
<salary>4000</salary>
<department>
<dname>会计部</dname>
<address>XX大厦-B103</address>
</department>
</employee>
<employee no="3310">
<name>李四</name>
<age>23</age>
<salary>3000</salary>
<department>工程部</department>
<address>XX大厦-B104</address>
</employee>
</hr>
写完后有两个办法检查文档正确与否,第一个办法就是利用IDEA,如果没有飘红那就是没有问题。第二个办法就是利用谷歌浏览器打开xml文件后,如果有报错的话,会有一段说明的文字。
二、XML语义约束
1.XML语义约束
XML文档结构正确,但可能不是有效的。
例如,员工档案XML中绝对不允许出现“植物品种”标签。XML语义约束就是用于规定XML文档中允许出现哪些元素。
XML语义约束有两种定义方式:DTD与XML Schema。
2.DTD(Document Type Definition)
DTD(Document Type Definition, 文档类型定义) 是一种简单易用的语义约束方式。
DTD文件的扩展名为.dtd。
利用DTD中的<!ELEMENT>标签,我们可以定义XML文档中允许出现的节点及数量,以hr.xml为例:
定义hr节点下只允许出现1个employee子节点。<!ELEMENT hr (employee)>
employee节点必须包含以下四个节点,且按照顺序出现。<!ELEMENT employee(name,age,salary,department)>
定义name标签只能是文本,#PCDATA代表文本元素。<!ELEMENT name(#PCDATA)>
3.DTD 定义节点数量
如某个子节点需要多次重复出现,则需要在子节点后增加相应的描述符。
hr节点下最少出现1个employee子节点。<!ELEMENT hr (employee+)>
hr节点下可出现0…n个employee子节点。<!ELEMENT hr(employee*)>
hr节点下最多出现1个employee子节点。<! ELEMENT hr(employee?)>
4.XML引用DTD文件
在XML中使用<!DOCTYPE>标签来引用DTD文件,书写格式:<!DOCTYPE 根节点 SYSTEM "dtd文件路径">
实例:<!DOCTYPE hr SYSTEM "hr.dtd">
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT hr (employee+)>
<!ELEMENT employee (name,age,salary,department)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT department (dname,address)>
<!ELEMENT dname (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ATTLIST employee no CDATA "">
用.dtd约束和规范配置文件,约束XML文件。
5.XML Schema
XML Schema比DTD更加复杂,提供了更多功能。
XML Schema提供了数据类型、格式限定、数据范围等特性。
XML Schema是W3C标准。
<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.imooc.com/xml-schema" elementFormDefault="qualified">
<element name="hr">
<complexType>
<sequence>
<element name="employee" minOccurs="1" maxOccurs="99999">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age">
<simpleType>
<restriction base="integer">
<minInclusive value="18"></minInclusive>
<maxInclusive value="65"></maxInclusive>
</restriction>
</simpleType>
</element>
<element name="salary" type="integer"></element>
<element name="department">
<complexType>
<sequence>
<element name="dname" type="string"></element>
<element name="address" type="string"></element>
</sequence>
</complexType>
</element>
</sequence>
<attribute name="no" type="string" use="required"></attribute>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
课程总结:
完成了今天的学习目标:
1.XML语法规范
2.XML语义约束