【XML】概念,语法
1. 概念
-
XML:可扩展标记语言
xml是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者。xml是当前处理结构化文档信息中相当给力的技术,xml有助于在服务器之间穿梭结构化数据,这使得开发人员更加得心应手的控制数据的存储和传输。Xml用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。Xml是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
1.1 XML的特点以及作用。
* XML 指可扩展标记语言(EXtensible Markup Language)
* XML 是一种标记语言,很类似 HTML
* XML 的设计宗旨是传输数据,而非显示数据
* XML 标签没有被预定义。您需要自行定义标签
* XML 被设计为具有自我描述性
* XML 是 W3C 的推荐标准
-
XML的特点
- xml与操作系统、编程语言的开发平台都无关;
- 实现不同系统之间的数据交互。
-
XML的作用
- 配置应用程序和网站;
- 数据交互;
- Ajax基石。
1.2 HTML与XML区别
- XML 被设计为传输和存储数据,其焦点是数据的内容
- HTML 被设计用来显示数据,其焦点是数据的外观
- HTML 旨在显示信息,而 XML 旨在传输信息
- HTML语法比较松散,xml语法严格
- HTML所有标签都是预先定义好的, 使用固定的标签,展示不同的内容
- XML当中的标签都是自己定义的
- XML用处: 数据存储、配置文件、数据传输
2. 语法
2.1 基本语法:
- xml文档的后缀名 .xml
- xml第一行必须定义为文档声明
- xml文档中有且仅有一个根标签
- 属性值必须使用引号(单双都可)引起来
- 标签必须正确关闭
- xml标签名称区分大小写
- 文档声明
<?xml version="1.0"?> 必须写在文档的第一行
属性:
version版本号,一般1.0
encoding指定文档的码表 默认iso-8859-1
standalone指定文档是否独立yes或no,即是否可以引用其它文件
- 5个预定义的实体引用
< < 小于
> > 大于
& & 和号
' ’ 单引号
" " 双引号
-
元素
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符“xml” (或者XML,Xml)开始
- 名称不能包含空格
-
文本
转义字符
<![CDATA[数据内容]]> 数据内容中输入什么就显示什么,不用使用预定义实体引用。
- 属性
id值唯一确定。
2.2 快速入门
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<name>张三</name>
<age>23</age>
<gender>male</gender>
</user>
<user id="2">
<name>李四</name>
<age>21</age>
<gender>female</gender>
<code>
<![CDATA[
if(a>b&&a<c){}
]]>
</code>
</user>
</users>
浏览器打开后:
2.3 约束
-
作为框架的使用者(程序员):
- 能够在xml中引入约束文档
- 能够简单的读懂约束文档
-
分类:
- DTD:一种简单的约束技术
- Schema:一种复杂的约束技术
2.3.1 DTD:
- 引入dtd文档到xml文档中
- 内部dtd:将约束规则定义在xml文档中
- 外部dtd:将约束的规则定义在外部的dtd文件中
* 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
* 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
例如
student.dtd
<!ELEMENT students (student*) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd">
<students>
<student number="0001">
<name>tom</name>
<age>18</age>
<sex>male</sex>
</student>
</students>
2.3.2 Schema:
- 引入:
1.填写xml文档的根元素
2.引入xsi前缀. xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
3.引入xsd文件命名空间. xsi:schemaLocation=“https://blog.csdn.net/qq_41879343/xml student.xsd”
4.为每一个xsd约束声明一个前缀,作为标识 xmlns=“https://blog.csdn.net/qq_41879343/xml”
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://blog.csdn.net/qq_41879343"
xsi:schemaLocation="https://blog.csdn.net/qq_41879343 student.xsd">
- 例如
student.xsd
<?xml version="1.0"?>
<xsd:schema xmlns="https://blog.csdn.net/qq_41879343/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://blog.csdn.net/qq_41879343/xml" elementFormDefault="qualified">
<xsd:element name="students" type="studentsType"/>
<xsd:complexType name="studentsType">
<xsd:sequence>
<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="studentType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageType" />
<xsd:element name="sex" type="sexType" />
</xsd:sequence>
<xsd:attribute name="number" type="numberType" use="required"/>
</xsd:complexType>
<xsd:simpleType name="sexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="male"/>
<xsd:enumeration value="female"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ageType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="256"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="numberType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="siyi_\d{4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--
1.填写xml文档的根元素
2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"
-->
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://blog.csdn.net/qq_41879343/xml"
xsi:schemaLocation="https://blog.csdn.net/qq_41879343/xml student.xsd"
>
<student number="siyi_0001">
<name>tom</name>
<age>18</age>
<sex>male</sex>
</student>
</students>