当前位置:网站首页>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</售价>
</书>
</书架>
边栏推荐
- Supervarimag superconducting magnet system SVM series
- 数据库基础:select基本查询语句
- 水产行业智能供应链管理平台解决方案:支撑企业供应链数字化,提升企业管理效益
- 摄像头的MIPI接口、DVP接口和CSI接口[通俗易懂]
- Stanford, salesforce|maskvit: masked vision pre training for video prediction
- [live broadcast appointment] database obcp certification comprehensive upgrade open class
- PMP是被取消了吗??
- Lumiprobe 自由基分析丨H2DCFDA说明书
- Li Kou daily question - Day 32 -1232 Dotted line
- [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
猜你喜欢
小红书上的爱情买卖
云服务器ECS夏日省钱秘籍,这次@老用户快来领走
The market value evaporated by 74billion yuan, and the big man turned and entered the prefabricated vegetables
B2B e-commerce platform solution for fresh food industry to improve the standardization and transparency of enterprise transaction process
MySQL common graphics management tools | dark horse programmers
透过华为军团看科技之变(六):智慧公路
如何使用物联网低代码平台进行个人设置?
宝,运维100+服务器很头疼怎么办?用行云管家!
Cdga | if you are engaged in the communication industry, you should get a data management certificate
【AGC】如何解决事件分析数据本地和AGC面板中显示不一致的问题?
随机推荐
How to use the low code platform of the Internet of things for personal settings?
Cdga | if you are engaged in the communication industry, you should get a data management certificate
学习笔记-JDBC连接数据库操作的步骤
Leetcode-160 intersecting linked list
MySQL common graphics management tools | dark horse programmers
Lean thinking: source, pillar, landing. I understand it after reading this article
Leetcode-128 longest continuous sequence
2. Create your own NFT collections and publish a Web3 application to show them start and run your local environment
docker 部署mysql8.0
【AGC】如何解决事件分析数据本地和AGC面板中显示不一致的问题?
机械设备行业数字化供应链集采平台解决方案:优化资源配置,实现降本增效
Chinese and English instructions human soluble advanced glycation end products receptor (sRAGE) ELISA Kit
制造业SRM管理系统供应商全方位闭环管理,实现采购寻源与流程高效协同
Clean up system cache and free memory under Linux
Database foundation: select basic query statement
华为云专家详解GaussDB(for MySQL)新特性
【快应用】Win7系统使用华为IDE无法运行和调试项目
精耕渠道共谋发展 福昕携手伟仕佳杰开展新产品培训大会
Leetcode203 remove linked list elements
Lake Shore—CRX-EM-HF 型低温探针台