版权声明:复制 转载 请附属出处,谢谢合作,博主:无问西东,如有盗版,违者必究 https://blog.csdn.net/qq_42756989/article/details/85920028
xml简介:
eXtensible Markup Language 简写 xml(可扩展标记型语言)
xml语言是具有结构性的标记语言, 可以灵活的存储一对多的数据关系。
xml用途:
可以用于显示数据
储存数据(主要功能)
xml文件组成部分
- 文档声明
什么是文档声明?-
在编写文档时,需要先使用文档声明xml文档。且必须出现文档的第一行。是个硬性规定。
<?xml version='1.0' encoding='UTF-8'?><!--xml 表示标签的名字 version 当前文件版本号 encoding 当前编码 standalone 标记此文档是否独立 例如 standalone="yes" 或者no-->
-
- 元素
什么是元素?
-
xml中的元素其实就是一个个的标签
标签分为两种: -
包含标签体
<person> <name>冯nuo</name> <age>18</age> </person>
-
不包含标签体
<person name="冯nuo" age = "18" />
标签书写规范
-
严格区分大小写;
-
只能以字母或下划线开头;abc _abc
-
不能以xml(或XML、Xml等)开头
-
名称字符之间不能有空格或制表符;
-
名称字符之间不能使用冒号 :
元素属性
注意事项: -
一个元素可以有多个属性,每个属性都有它自己的名称和取值。
-
属性值一定要用引号(单引号或双引号)引起来。
-
属性名称的命名规范与元素的命名规范相同
-
元素中的属性是不允许重复的
-
在XML技术中,标签属性所代表的信息也可以被改成用子元素的形式来描述
<?xml version="1.0" encoding="UTF-8"?> <persons> <person name="冯nuo" age="18" /> <person> <name>冯nuo</name> <age>18</age> </person> </persons>
-
注释
格式:- (注释不能嵌套定义)
-
CDATA区
为什么要使用CDATA区域?- 如果我们在标签中写入的内容, 想要带有标签的标记符号的话, 就需要对这段内容进行转义
写法:<![CDATA[ 内容 ]]>
- 如果我们在标签中写入的内容, 想要带有标签的标记符号的话, 就需要对这段内容进行转义
-
特殊字符
-
PI指令(处理指令)
<?xml-stylesheet type="text/css" href="css的路径"?>
可以在xml设置样式注意:设置样式,只能对英文标签名称起作用,对于中文的标签名称不起作用的。
xml的约束
为什么需要约束
- 打个比方,一个文件中保存的是个关于人的相关信息,在没有约束的情况下可定义非人类属性特征的信息,在编译的时候不会报错,但不符合常理,xml的标签是自定义的,需要技术来规定xml中只能出现的元素,这个时候需要约束。
- xml约束技术:dtd约束 schema约束
DTD
什么是DTD?
- DTD(Document Type Definition),文档类型定义,用来约束XML文档。例如要求xml文档的根元素必须是,在元素下可以包含0~n个元素,每个元素必须有一个number属性,而且还要有三个子元素,分别为、、,这三个子元素的内容必须为文本内容,而不能是子元素。
代码:
<!-- persons元素中可以包含1~n个student元素 -->
<!ELEMENT persons (student+)>
<!-- person元素中必须包含name、age、sex元素,而且顺序也是固定的 -->
<!ELEMENT person (name,age,sex)>
<!-- name元素内容为文本,即字符串 -->
<!ELEMENT name (#PCDATA)>
<!-- age元素内容为文本 -->
<!ELEMENT age (#PCDATA)>
<!-- sex元素内容为文本 -->
<!ELEMENT sex (#PCDATA)>
xml文件中引入DTD文件:
格式: <!DOCTYPE persons SYSTEM "路径名"> (以上文person为例)
引入了写好的DTD文件后,格式就必须跟DTD文件保持一致。
语法细节
在DTD文档中声明xml元素使用ELEMENT关键字
语法: <!ELEMENT 元素名称 使用规则>
使用规则:
(#PCDATA):只元素的主体内容只能是普通的文本
EMPTY:用于指示元素的主体为空
ANY:用于指示元素的主体内容为任意类型。
(子元素):指示元素中包含的子元素
定义子元素及描述他们的关系:
1.如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。
2.如果子元素用"|"分开,说明任选其一。
3.用+、*、?来表示元素出现的次数
如果元素后面没有+*?:表示必须且只能出现一次
+:表示至少出现一次,一次或多次
*:表示可有可无,零次、一次或多次
?:表示可以有也可以无,有的话只能有一次。零次或一次
在xml文档中指定内部DTD
还是以人类为例代码演示
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<!DOCTYPE persons [
<!ELEMENT persons (person+)>
<!ELEMENT person (name, age, sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
<persons>
<person>
<name>冯nuo</name>
<age>18</age>
<sex>nan</sex>
</person>
</persons>
在XML文档中指定外部公共DTD
格式:
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD网址">
DTD属性定义
在DTD文档中使用ATTLIST关键字来为一个元素声明属性
属性定义格式:
<ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
…………
>
属性类型:
- CDATA : 属性值为任意文本数据
- Enumerated :属性值必须是枚举列表中的一个
- ID : 属性值必须是唯一的,并且属性值不能以数字开头
设置说明- #REQUIRED:表示该属性必须出现
- #IMPLIED: 表示该属性可有可无
- #FIXED:表示属性的取值为一个固定元值。语法 #FIXRD"固定值"
直接值:表示属性的取值为该默认值