XML 是可扩展标记语言(eXtensible Markup Language)
标记语言:是一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。
XML被设计用来传输和储存数据。
用途:
1.对于HTML的补充
HTML/CSS更关注于显示和布局,那么如果希望在HTML中展示动态数据,我们可以简单地通过JavaScript读取XML文件(把数据存放在XML中),而不需要总是去改变HTML。
2.简化数据共享
它是纯文本文档,让人也能看懂。另一方面,它更关注数据本身,即在不同的系统,文件格式下的文件可能不兼容,但可以提取为相同的XML来保存数据,使它有非凡的兼容性和跨平台性。
XML需要有一个根元素,属性需要加引号,对大小写敏感,需要关闭标签。它没有预定义的标签.
XML是可扩展的:以下XML文档
<note>
<name>samname>
<content>good morning!content>
note>
当程序需要访问name元素和content元素时
如果我们扩展了XML,如添加date元素
<note>
<name>samname>
<content>good morning!content>
<date>2021date>
note>
不会影响程序的访问,即程序只要可以发现name元素和content元素的话,还是可以正常访问的。
XML属性(attribute)与元素
<file type="gif">computer.giffile>
此处type是属性,file是元素
属性通常与数据无关,但与处理这个元素的软件有关
XML哲学:把元数据(有关数据的数据)存为属性,数据存为元素。
如果像下面的代码块,把type也存为元素是不恰当的(因为type并不是该文件数据的一部分,数据应该是文件本身)
<file>
<fileitself>computer.giffileitself>
<type>giftype>
file>
在XML中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名,就会发生命名冲突。即:XML命名空间提供避免元素命名冲突的方法。
命名空间语法:
xmlns:namespace-prefix="namespaceURI"
例:
<f:table xmlns:f="http://www.w3school.com.cn/furniture">
<f:name>African Coffee Tablef:name>
<f:width>80f:width>
<f:length>120f:length>
f:table>
使用这种方式时,想使用此命名空间的子标签都要加上相应的前缀。
xmlns="namespaceURI"
例:
<table xmlns="http://www.w3school.com.cn/furniture">
<name>African Coffee Tablename>
<width>80width>
<length>120length>
table>
写在文档第一行第一列,是一种XML的文档说明,XML解析器会根据此信息解XML文档
如:
version: xml文档版本,一般都为1.0
encoding:使用的字符编码集,默认UTF-8
standalone:本xml文档是否独立,如果独立为yes,依赖外部约束文件为no
xml1.0并未规定要写文档声明,但如果不写,浏览器猜测文档的数据格式可能会引起错误,并且不写文档的声明不是一个格式良好的xml文档。
所有XML文档中的文本都会被解析器解析,只有CDATA区段(CDATA section)中的文本会被解析器忽略。
由"“开始,由”
]]>
"结束
例:
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
script>
XML验证是如何进行的?
进行DTD或XML Schema(XSD)验证
拥有正确语法的 XML 被称为==“形式良好”==的 XML。
通过 DTD 验证(或XML Schema) 的XML是 “合法” 的 XML。
例: 如果一个文件如下,将其sam
删去仍是形势良好的XML,但很可能不是“合法”的XML。DTD验证(或XML Schema)很可能告诉我们此XML应该有name元素。
<note>
<name>samname>
<content>good morning!content>
<date>2021date>
note>
什么是DTD, XML Schema(XSD)?
DTD是什么?
DTD (Document Type Definition) 文档类型定义,可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD可被成行地声明于 XML 文档中,也可作为一个外部引用。
- 在XML文档中
格式:
带有DTD的XML文档:
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Toveto>
<from>Janifrom>
<heading>Reminderheading>
<body>Don't forget me this weekendbody>
note>
- 外部引用
语法:
例子:
使用外部引用的XML文档
<note>
<to>Toveto>
<from>Janifrom>
<heading>Reminderheading>
<body>Don't forget me this weekend!body>
note>
外部的note.dtd文档
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
XML Schema (XSD)是什么
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)
XML Schema 是基于 XML 的 DTD 替代者(比DTD更强大)。
一个xsd文档是由
开始,
结束的加粗样式
XSD文件定义了XML文件的正确与否
例:
这是一个xml文件
<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>Georgeto>
<from>Johnfrom>
<heading>Reminderheading>
<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"
即声明xsi作为命名空间前缀的值是http://www.w3.org/2001/XMLSchema-instance
- xsi有了定义,即可以定义在xsi命名空间下的 schemaLocation属性,
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"
指向了schema文件所在处。
- 另一种schemaLocation的写法:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
语法为 xsi:“键 值”
键为名字,值是xsd文件所在处,意为,在所有属于 命名空间键的元素都受到值 的xsd文件的约束。
如下代码是上文xml文件对应的.xsd文件(schema文件)
<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>
下面的片断:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"
。同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema"
的元素和数据类型应该使用前缀 xs:
这个片断:
targetNamespace="http://www.w3school.com.cn"
显示被此 schema 定义的元素 (note, to, from, heading, body) 来自命名空间: "http://www.w3school.com.cn"。
这个片断:
xmlns="http://www.w3school.com.cn"
指出默认的命名空间是 "http://www.w3school.com.cn"。
这个片断:
elementFormDefault="qualified"
指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
参考:
- https://www.w3school.com.cn/xml/xml_namespaces.asp
- https://blog.csdn.net/lengxiao1993/article/details/77914155
你可能感兴趣的:(XML,xml)