一、XML概述

1.什么是xml:

英文Extensible MarkUp Language,可扩展的标记语言。

* 可扩展的标记语言:在xml里面的标记是可以扩展的。

* xml版本号1.0 ,1.1

2.xml用途:它用来存储数据

* 1.作为系统与系统之间传输数据的格式

* 2.作为项目的配置文件

* 3.保存有结构关系型的数据。

比如:<china name="中国">

<province name="河北">

<city>衡水</city>

<city>保定</city>

----

</province>

-----

</china>

3.XML 和 html的比较:

1.xml文档的标记可以随意扩展,html的标记是预定义好的。

2.xml区分大小写,html不区分大小写。

3. html主要是用来显示数据的,xml是用来保存数据的。

4. html中,空格会自动过滤,而xml不会。

5. html中可以有多个根节点,在xml里面只有一个。

二、 XML语法

1.XML的文档声明:

语法:<?xml version="1.0" encoding="utf-8" standalone="yes"?>

属性: version 用来表示xml的版本号

encoding 用来表示xml的编码格式

standalone 用来表示xml文档是否依赖外部的文件。

注意:xml的文档声明一定放到第一行,第一列。

比如:

<?xml version="1.0" encoding="utf-8"?>

<china name="zhongguo">

<province name="hebei">

<city> hengshui</city>

</province>

</china>

2.XML元素定义:

xml文档由元素(标记)组成,元素由开始标记、属性、文本和结束标记组成。

标记可以嵌套,必须合理的嵌套,比如:

<a>

<b>bbbb</b>

</a>

错误的写法:

<a>

<b>bbbb</a>

</b>

3.属性定义:

语法:<province name="hebei">

属性对应的值要用""给括起来。

4.注释:

html的注释:<!-- html的注释-->

javaScript的注释:参照java的注释

xml的注释:<!--xml的注释-->

注意:

1. xml是区分大小写的。

2. xml的标记不能以数字或者_下划线开头。比如<1a>内容</1a>,<_a>内容<_a>,错误的写法

 3. xml的标记不能以xml或者XML(大小写都不可以)等开头。

4. xml的标记里面不能包含空格等特殊符号,比如<a a>内容</a a>,<a:b>内容</a:b> 错误的写法。

三、 DTD 约束

1.什么是约束:

在xml文档中,咱们可以通过一个文件来约束xml文档中的内容规范,这个规范就是约束。

简单来说:约束就是规定了xml文件中可以写什么,不可以写什么。

为什么要有约束?

 因为xml文件可以随意写,如果标记随意写,在解析xml文件时,程序员就不清楚xml文件中的标记具体表示什么含义

所以说用约束规范xml文件的书写。

2.DTD约束

什么是DTD:文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

比如:

<!ELEMENT 书架 (书+)>

<!ELEMENT 书     (书名,作者,价格)>

<!ELEMENT 书名    (#PCDATA)>

<!ELEMENT 作者    (#PCDATA)>

<!ELEMENT 价格    (#PCDATA)>

3.DTD引入:

1.直接内嵌在xml文件中

语法:<!DOCTYPE 根元素名称 [dtd具体约束内容]>

<!DOCTYPE 书架 [

<!ELEMENT 书架 (书+)>

<!ELEMENT 书     (书名,作者,价格)>

<!ELEMENT 书名    (#PCDATA)>

<!ELEMENT 作者    (#PCDATA)>

<!ELEMENT 价格    (#PCDATA)>

]>

2.外部引入方式:

>>> 本地引入:

语法:<!DOCTYPE 书架 SYSTEM "book.dtd">

>>> 公网引入:

<!DOCTYPE 书架  PUBLIC "DTD名称" "DTD文件在公网的url">

4.DTD语法:

1.元素定义:

基本语法 <!ELEMENT 元素名称 元素内容>

元素内容对应的类型:

>>>普通的文本:#PCDATA

>>>子元素:比如说:(子元素1,子元素2,---)

>>>EMPTY:比如说 <book />

>>>ANY:代表任意内容,元素内容可以是普通的文本,也可以是子元素。

注意:

* 表示0个或者多个

+ 表示一个或者多个

| 任选一个

,表示子元素按顺序排列

? 表示可以出现0或者1

2.属性定义

语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>

属性类型:

CDATA:属性值为任意文本数据;

CDATA,即Character Data(字符数据)。表示属性的类型为字符类型!

Enumerated:属性值必须是枚举列表中的一个;

定义中不会出现Enumerated关键字,定义枚举类型的属性需要给出枚举列表。

当属性值为枚举类型时,那么这个属性的取值必须是枚举列表中的一个值

ID:属性值必须是唯一的,并且属性值不能以数字开头;

  一个元素最多只能有一个ID 属性,ID属性用来表示元素唯一性的唯一标识。ID属性就相当与元素的身份证号,必须是唯一标识!

IDREF:属性值必须是ID属性的值;

IDREF属性用来与其他元素建立关联关系,IDREF属性的值必须是另一元素的ID属性值

IDREFS:一对多;

设置说明:

#REQUIRED:表示属性是必须的;

#IMPLIED:表示属性是可选的,即这个属性可以不给出;

#FIXED

默认值

四、Schema约束

1.什么是Schema约束:它同DTD约束基本一样,也是用来规范xml文件内容的书写规范,只不过Schema的约束比DTD更加强大。

区别:

>>>DTD约束文件的后缀名dtd,机制采用自身的约束。

>>>Scheam约束文件的后缀名是xsd,它是基于xml语法格式。

2.名称空间:

名称空间的作用就是用来在xml文档中引入schema文件的,但是在一个xml文件中可以引入多个schema文件,就可以使用名称空间来区分不同的约束文件。

3.引入Schema文档:

第一种方式:通过名称空间来引入shcema文件,第二种:不通过名称空间引入。

4.Schema语法:

>>> 元素定义 >>>属性定义。

2-1-XML和约束文档相关推荐

  1. schema约束文档与xml文件详解

    schema约束文档与xml文件详解 1.前言 2.schema约束文档(.xsd文件) 2.1 targetNameSpace 2.2官方文档与自定义文档的关系 2.3 声明名称空间 2.4 sch ...

  2. 使用XML创建Excel文档

    使用XML创建Excel文档            原例子使用VB.Net写的,以下的用C#改写的代码 原文代码: http://www.gotdotnet.com/Community/UserSam ...

  3. Java 中的 XML:Java 文档模型的用法

    Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...

  4. [Swift通天遁地]七、数据与安全-(2)对XML和HTML文档的快速解析

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. Caused by: org.xml.sax.SAXParseException: 文档根元素 “component“ 必须匹配 DOCTYPE 根 “null“

    切换了dev分支启动时报错:Caused by: org.xml.sax.SAXParseException: 文档根元素 "component" 必须匹配 DOCTYPE 根 & ...

  6. 火狐浏览器 xml 解析错误:文档元素后存有无效内容_五分钟了解浏览器工作原理...

    作者简介: 李中凯 八年多工作经验 前端负责人, 擅长JavaScript/Vue. 掘金文章专栏:KaysonLi 的个人主页 - 专栏 - 掘金 Web 浏览器无疑是用户访问互联网最常见的入口.浏 ...

  7. xml源文件的文档生成工具--DITA Open Toolkit(DITA-OT)的使用入门

    公司的写作软件是oxygen xml editor,但对于文档的生成一直百思不得其解,除了使用公司定制的发布工具,试过oxygen xml editor的transformation功能,生成的文档很 ...

  8. xml对java通讯录的解析_Dom4j解析xml格式通讯录文档

    JDBC连接数据库,进行DOM4j解析的类: AnalyzeXML.Java package xml; import java.io.File; import java.io.FileInputStr ...

  9. org.xml.sax.SAXParseException: 文档根元素 java-control-panel 必须匹配 DOCT

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_35454116/article/ ...

最新文章

  1. mysql累加某字段到达临界值,获取另一个字段的值
  2. cinder与ceph的区别_分布式存储基础、Ceph、cinder及华为软件定义的存储方案 -
  3. 信息流绑架了你的大脑?
  4. B-TrunC标准成功加入ITU集群国际标准
  5. 线性表易错点与线性表程序设计易错点
  6. 【C语言笔记初级篇】第八章:简单调试
  7. 如何免费的让网站启用HTTPS
  8. 【图像分割】基于matlab蚁群优化模糊聚类图像分割【含Matlab源码 130期】
  9. python模拟别人说话的声音传得最远_谁说话的声音传得最远脑筋急转弯的答案是什么...
  10. 泛微e9隐藏明细表_泛微协同 泛微OA e-cology产品功能清单 模块列表
  11. 浏览器发送POST请求、DELETE请求
  12. 用计算机如何绘制流程图,电脑上怎么绘制流程图?电脑小白也能学会的流程图制作方法...
  13. kubelet liveness probe源码简析
  14. uestc 1593 老司机破阵(线段树 or multiset)
  15. 2017年6月Mac OS 10.11安装文档
  16. 2022年山东最新交安安全员考试模拟题及答案
  17. 3.7 使用极坐标网格工具制作雷达扫描效果 [Illustrator CC教程]
  18. [C++STL教程]7.priority_queue优先队列入门学习!零基础都能听懂的教程
  19. 李宏毅机器学习作业6-使用GAN生成动漫人物脸
  20. libnet发包过程

热门文章

  1. mysql群集配置_MySQL主主集群配置
  2. 【Flink】Flink Committing offsets to Kafka takes longer than the checkpoint interval
  3. 【kafka】支持超高并发的kafka网络设计
  4. 【SpringCloud】服务降级 Hystrix 断路器
  5. 【Kafka】kafka命令kafka-console-consumer.sh
  6. 【Flink】Flink调优指南
  7. 【Hadoop】Bad connect ack with firstBadLink as ×.×.×.×:50010
  8. 【Siddhi 5】Siddhi 5 源码编译
  9. kafka消费报错:org.apache.kafka.common.errors.WakeupException: null
  10. 设计模式:高性能IO之Reactor模式