当前位置:网站首页>XML语法、约束
XML语法、约束
2022-07-01 18:43:00 【斯文~】
XML概述
XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。
<?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 version="1.0" encoding="UTF-8" ?>
version:XML默认的版本号码、该属性是必须存在的
encoding:本XML文件的编码
XML的标签(元素)规则
XML可以自定义标签。
1.标签由一对尖括号和合法标识符组成: <name></name>
,必须存在一个根标签,有且只能有一个;
2. 标签必须成对出现,有开始,有结束: <name></name>
;
3. 特殊的标签可以不成对,但是必须有结束标记,如:<br/>
;
4.标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来<student id = “1”></name>
;
5.标签需要正确的嵌套;
XML的注释
XML文件中可以定义注释信息:<!– 注释内容 -->
;
XML转义字符
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
XML文件中可以存在CDATA区
<![CDATA[ …内容… ]]>
严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的,但是,把它们都进行转义是一个好的习惯,也可以使用<![CDATA[]]>
来包含不被xml解析器解析的内容。
但需要注意:
1.此部分不能再包含”]]>”;
2.不允许嵌套使用;
3.]]>
这部分不能包含空格或者换行;
代码示例
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释:根标签有且仅能有一个 -->
<student>
<name>女儿国王</name>
<sex>女</sex>
<hobby>唐僧,追唐僧</hobby>
<info>
<age>30</age>
<addr>女儿国</addr>
</info>
<sql>
select * from user where age < 18;
select * from user where age < 18 && age > 10
<![CDATA[ select * from user where age < 18 ]]>
</sql>
</student>
XML约束
什么是文档约束
由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题,因此可以对XML进行写作规范限制。
文档约束的分类
1.DTD
2.schema
DTD约束
编写DTD约束文档,后缀必须是.dtd,在需要编写的XML文件中导入该DTD约束文档即可,然后按照约束的规定编写XML文件的内容。
缺点
不能约束具体的数据类型。
代码示例
data.dtd
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
test.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 书架 SYSTEM "data.dtd">
<书架>
<书>
<书名>精通JavaSE加强</书名>
<作者>dlei</作者>
<!-- DTD约束不能约束数据类型 -->
<售价>很贵</售价>
</书>
<书>
<书名></书名>
<作者></作者>
<售价></售价>
</书>
<书>
<书名></书名>
<作者></作者>
<售价></售价>
</书>
</书架>
schema约束
schema可以约束具体的数据类型,约束能力上更强大,schema本身也是一个xml文件,本身也受到其他约束文件的要求,所以编写的更加严谨。
schema的使用
1.编写schema约束文档,后缀必须是.xsd;
2.在需要编写的XML文件中导入该schema约束文档;
3.按照约束内容编写XML文件的标签;
代码示例
data.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>
test.xml
<?xml version="1.0" encoding="UTF-8" ?>
<书架 xmlns="http://www.itcast.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itcast.cn data.xsd">
<!-- xmlns="http://www.itcast.cn" 基本位置 xsi:schemaLocation="http://www.itcast.cn books02.xsd" 具体的位置 -->
<书>
<书名>神雕侠侣</书名>
<作者>金庸</作者>
<售价>399.9</售价>
</书>
<书>
<书名>神雕侠侣</书名>
<作者>金庸</作者>
<售价>19.5</售价>
</书>
</书架>
边栏推荐
- The market value evaporated by 74billion yuan, and the big man turned and entered the prefabricated vegetables
- Leetcode-83 delete duplicate elements in the sorting linked list
- Three ways for redis to realize current limiting
- 寶,運維100+服務器很頭疼怎麼辦?用行雲管家!
- Lake Shore - crx-em-hf low temperature probe station
- PMP是被取消了吗??
- SuperOptiMag 超导磁体系统 — SOM、SOM2 系列
- 宝,运维100+服务器很头疼怎么办?用行云管家!
- 【AGC】如何解决事件分析数据本地和AGC面板中显示不一致的问题?
- 前4A高管搞代运营,拿下一个IPO
猜你喜欢
宝,运维100+服务器很头疼怎么办?用行云管家!
透过华为军团看科技之变(六):智慧公路
docker 部署mysql8.0
机械设备行业数字化供应链集采平台解决方案:优化资源配置,实现降本增效
华为游戏初始化init失败,返回错误码907135000
【pytorch记录】自动混合精度训练 torch.cuda.amp
How to realize the applet in its own app to realize continuous live broadcast
Leetcode-160 intersecting linked list
Altair HyperWorks 2022 software installation package and installation tutorial
1. "Create your own NFT collections and publish a Web3 application to show them." what is NFT
随机推荐
【AGC】如何解决事件分析数据本地和AGC面板中显示不一致的问题?
Li Kou daily question - Day 32 -589 N × Preorder traversal of tree
transform + asm资料
Solution of intelligent supply chain management platform in aquatic industry: support the digitalization of enterprise supply chain and improve enterprise management efficiency
Lake Shore 连续流动低温恒温器传输线
Games202 operation 0 - environment building process & solving problems encountered
机械设备行业数字化供应链集采平台解决方案:优化资源配置,实现降本增效
Supervarimag superconducting magnet system SVM series
Lean thinking: source, pillar, landing. I understand it after reading this article
11、用户、组和权限(1)
[AGC] how to solve the problem that the local display of event analysis data is inconsistent with that in AGC panel?
精益思想:来源,支柱,落地。看了这篇文章就懂了
Lake shore M91 fast hall measuring instrument
3. "Create your own NFT collections and publish a Web3 application to show them" cast NFT locally
[quick application] win7 system cannot run and debug projects using Huawei ide
Lake Shore M91快速霍尔测量仪
数据库基础:select基本查询语句
The former 4A executives engaged in agent operation and won an IPO
[quick application] there are many words in the text component. How to solve the problem that the div style next to it will be stretched
Mipi interface, DVP interface and CSI interface of camera [easy to understand]