文章目录
- XML
 - XML基本介绍
 - XML创建和语法规则
 - XML文档约束
 - 认识文档约束
 - DTD约束(了解)
 - schema约束(了解)
 
XML
XML基本介绍
XML概述:
XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是一种可以自定义数据的表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。
XML写法如下:
<?xml version="1.0" encoding="UTF-8"?>
<data>
		<sender>张三</sender>
    <receiver>李四</receiver>
		<src>
						<addr>北京</addr>
        		<date>2022-11-11 11:11:11</date>
    </src>
    <current>武汉</current>
    <dest>广州</dest>
</data>
 
XML的几个特点和使用场景:
一是纯文本,默认使用UTF-8编码;二是可嵌套;
如果把XML内容存为文件,那么它就是一个XML文件。
XML的使用场景:XML内容经常被当成消息进行网络传输如下,或者作为配置文件用于存储系统的信息。

XML创建和语法规则
XML创建:
就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello_world.xml
IDEA创建XML文件的操作步骤:
XML文件创建是非常简单的, 和创建一个txt文本是什么区别的, 只不过文件的后缀名
.xml

XML语法规则:
XML文件的后缀名为:xml
文档声明必须是第一行
<?xml version="1.0" encoding="UTF-8" ?>
version:XML默认的版本号码、该属性是必须存在的
encoding:本XML文件的编码格式
 
XML的标签(元素)规则:
标签由一对尖括号和合法标识符组成: <name></name>,
必须存在一个根标签,有且只能有一个。标签必须成对出现,有开始,有结束: <name></name>
特殊的标签可以不成对,但是必须有结束标记,如: <br/>
标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来<student id = “1"></name>
标签需要正确的嵌套
演示写法:
<?xml version="1.0" encoding="UTF-8" ?>
<student>
    <name>小红</name>
    <sex>女</sex>
    <age>18</age>
    <info>
        <address>四川</address>
        <phone>18810010902</phone>
    </info>
</student>
 
XML的其他组成:
XML文件中可以定义注释信息:
<!-- 注释内容 --><!--我是一个注释-->由于XML直接写特殊符号会冲突, 所以XML文件中可以存在以下特殊字符:
<表示小于符号(<)>表示大于符号(>)&表示和号(&)'表示单引号(’ ')"表示双引号(" ")XML文件中可以存在CDATA区(快捷输入: CD):
\<![CDATA[ …内容… ]]>
- 在该内容中写特殊符号就不会冲突
 <student> <![CDATA[ < > "" '' ]]> </student>
XML文档约束
认识文档约束
问题:由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题, 别人拿到文件可能并不知道如何进行解析。

什么是文档约束呢?
文档约束:是用来限定xml文件中的标签以及属性应该怎么写, 以此强制约束程序员必须按照文档约束的规定来编写xml文件。
文档约束的分类(了解即可, 约束文件一般是不用自己写的):
DTD
schema
DTD约束(了解)
需求:
利用DTD文档约束, 约束一个XML文件
实现步骤如下:
编写DTD约束文档,后缀必须是
.dtd
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
 
在需要编写的XML文件中导入该DTD约束文档, 导入DTD约束文档后, XML只能按照约束的规定编写XML文件的内容。
<?xml version="1.0" encoding="UTF-8" ?>
<!--导入DTD约束该文件-->
<!DOCTYPE 书架 SYSTEM "data.dtd">
<书架>
    <书>
        <书名>程序设计</书名>
        <作者>作者a</作者>
        <售价>99.9</售价>
    </书>
</书架>
 
注意: DTD可以约束XML文件的编写格式, 不能约束具体的数据类型。
schema约束(了解)
文档约束 - shema:
schema可以约束具体的数据类型,约束能力上更强大。
schema本身也是一个xml文件,本身也受到其他约束文件的要求,所以编写的更加严谨
需求:
利用schema文档约束,约束一个XML文件的编写。
实现步骤如下:
编写schema约束文档,后缀必须是.xsd,具体的形式如下。
<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.itcast.cn"
        elementFormDefault="qualified" >
    <!-- targetNamespace:申明约束文档的地址(命名空间)-->
    <element name='书架'>
        <!-- 写子元素 -->
        <complexType>
            <!-- maxOccurs='unbounded': 书架下的子元素可以有任意多个!-->
            <sequence maxOccurs='unbounded'>
                <element name='书'>
                    <!-- 写子元素 -->
                    <complexType>
                        <sequence>
                            <element name='书名' type='string'/>
                            <element name='作者' type='string'/>
                            <element name='售价' type='double'/>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
 
在需要编写的XML文件中导入该schema约束文档, 按照约束内容编写XML文件的标签。
<?xml version="1.0" encoding="UTF-8" ?>
<!--导入schema约束文档-->
<书架 xmlns="http://www.itcast.cn"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.itcast.cn data.xsd">
    <书>
        <书名>程序设计</书名>
        <作者>李四</作者>
        <!--严格要求了数据类型-->
        <售价>40.9</售价>
    </书>
</书架>
                

















