xml
XML (Extensible Markup Language):指可扩展标记语言,xml中得元素标签是自定义的。使用 DTD
或者 schema
约束来规定xml的书写规则。
通过 XML 从 HTML 中分离数据。数据存储在独立的 XML 文件中,这样就可以专注于使用 HTML 对数据进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。
XML 作用:用来传输和存储数据
- 用于配置文件(xml后缀,与properties配置文件一样)。xml用于复杂的配置,properties用于简单的配置。
- 在网络中传输。
xml与html的区别:
- XML 被设计用来传输和存储数据,其重点是数据的内容(存储数据);HTML 被设计用来显示数据,其重点是数据的外观(展示数据)。
- xml标签都是自定义的,html标签是预定义(已经定义好的)。
- xml的语法严格,html语法松散
- xml是存储数据的,html是展示数据
xml 语法格式
基本语法:
- xml文档的后缀名 .xml;
xml第一行必须定义为文档声明
;xml文档中有且仅有一个根标签
;属性值必须使用引号(单双都可)引起来
; 如:<note date=“08/08/2008”>- 所有元素都必须有关闭标签
- xml标签名称区分大小写
- 注释:<!-- -->
xml第一行必须定义为文档声明:格式:
<?xml 属性列表 ?>
属性列表:
- version:版本号,必须的属性
- encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
- standalone:是否独立 * 取值:
- yes:不依赖其他文件
- no:依赖其他文件
如:
<?xml version="1.0" encoding="utf-8"?>
约束分类
约束:规定xml文档的书写规则
- XML 文档构建模块
所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
元素(标签)
属性
(属性可提供有关元素的额外信息,属性总是以名称=“值”的形式成对出现的。)
实体
(实体是用来定义普通文本的变量,标签体内容。实体引用是对实体的引用。)
PCDATA
:PCDATA 的意思是被解析的字符数据(parsed character data)。
- 把开始标签与结束标签之间的字符数据标记为标签体内容。通过这个标记,这个标签元素将会被解析。PCDATA 表示是会被解析器解析的文本。即标签元素解析后再将内容展示在页面上。
CDATA
:CDATA 的意思是字符数据(character data)。
- CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。即标签和标签体内容原样显示在页面上。
DTD
DTD:一种简单的约束技术。DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。 https://www.w3school.com.cn/dtd/index.asp
通过\<!DOCTYPE \>引入
内部的 DOCTYPE 声明:
假如 DTD 被包含在 XML 源文件中,应当通过下面的语法包装在一个 DOCTYPE 声明中,格式:
<!DOCTYPE 根元素 [元素声明]>
举例:
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
解释:
<!DOCTYPE note [ 定义此文档是 note 类型的文档。note为根元素。
定义 note 元素有四个元素:"to、from、heading,、body"
<!ELEMENT note (to,from,heading,body)>
定义 to 元素为 "#PCDATA" 类型
<!ELEMENT to (#PCDATA)>
定义 from 元素为 "#PCDATA" 类型,下同
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
外部文档声明:
假如 DTD 位于 XML 源文件的外部,那么通过下面的语法被封装在一个 DOCTYPE 定义中,格式:
<!DOCTYPE 根元素 SYSTEM "文件路径">
举例:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
“note.dtd” 文件:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Schema
Schema:一种复杂的约束技术。XML Schema 是基于 XML 的 DTD 替代者,XML Schema 可描述 XML 文档的结构,XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。 https://www.w3school.com.cn/schema/index.asp
- XML Schema功能比较完善:
- 定义可出现在文档中的元素
- 定义可出现在文档中的属性
- 定义哪个元素是子元素
- 定义子元素的次序
- 定义子元素的数目
- 定义元素是否为空,或者是否可包含文本
定义元素和属性的数据类型
- 定义元素和属性的默认值以及固定值
- 通过对数据类型的支持:
- 可更容易地描述允许的文档内容
- 可更容易地验证数据的正确性
- 可更容易地与来自数据库的数据一并工作
- 可更容易地定义数据约束(data facets)
- 可更容易地定义数据模型(或称数据格式)
- 可更容易地在不同的数据类型间转换数据
举例:
对于一个"note.xml" 的 XML 文档:
<?xml version="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
dtd约束:
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
schema约束:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
解释:
1、<schema> 元素是每一个 XML Schema 的根元素,<schema> 元素可包含属性:
<?xml version="1.0"?>
<xs:schema>
...
...
</xs:schema>
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">
...
...
</xs:schema>
2、xmlns:xs="http://www.w3.org/2001/XMLSchema"
显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。
同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型
应该使用前缀 xs。
3、targetNamespace="http://www.w3school.com.cn"
显示被此 schema 定义的元素 (note, to, from, heading, body) 来自命名空间:
"http://www.w3school.com.cn"。
4、xmlns="http://www.w3school.com.cn"
指出默认的命名空间是 "http://www.w3school.com.cn"。
5、elementFormDefault="qualified"
指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
6、<xs:element name="xxx" type="yyy"/>
定义简易元素的语法。
此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。
最常用的类型是:
• xs:string
• xs:decimal
• xs:integer
• xs:boolean
• xs:date
• xs:time
XML 文档对 XML Schema 的引用:
在 XML 文档中含有对 XML Schema 的引用:
<?xml version="1.0"?>
<note xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
代码解释:
xmlns="http://www.w3school.com.cn"
规定了默认命名空间的声明。此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素
都被声明于 "http://www.w3school.com.cn" 这个命名空间。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
拥有了可用的 XML Schema 实例命名空间:
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"
使用 schemaLocation 属性了。此属性有两个值。第一个值是需要使用的命名空间。第二个值是
供命名空间使用的 XML schema 的位置。
* 引入一个note.xsd文件,命名空间为http://www.w3school.com.cn,如果使用该文件中的元素,需要写成
命名空间:元素 的形式,比较麻烦,如:<http://www.w3school.com.cn:from> </http://www.w3school.com.cn:from>。
* 为了简化,使用 xmln:a = "http://www.w3school.com.cn" ,这时再使用<a:from> </a:from>。
* 再进一步,xmln = "http://www.w3school.com.cn",这样就是默认使用该文件中元素,<from> </from>。
xml命名空间参考:
http://www.360doc.com/content/12/0418/10/9437165_204585479.shtml
https://blog.csdn.net/wqc19920906/article/details/82709970