xml(可扩展标记语言)dtd(xml约束,文档类型定义)schema(功能比dtd更强大,用以定义xml文件。后缀名为xsd文件)

 

xml:要理解什么是xml文件,和html(超文本标记语言)做比较,就很清晰了。

     html:是一种可在浏览器中显示的文件,主要功能是将里面的文本内容静态的展示出来,用于显示数据。

                 html使用的标签html语言规定好的,每个标签都有自己特定的功能。

     xml:可扩展标记语言,设计出来的目的是用来传输和存储数据,用户可以在文件中自定义标签和元素,并使用

这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使用的时候很不方便。有给xml语言定义了一些约束文档,这些约束文档就专门用来约束当前这个xml中能够书写的具体的标签以及属性等信息。

xml的首行一定要是<?xml version="1.0"?>处理指令,且”<?xml”之间不能有空白,xml元素严格区分大小写,文档编码格式默认为“UTF-8”,版本只有1.0。

    xml文档声明格式:

           <?xml   ?> 在这个尖括号中书写标签的属性来声明当前的xml类型限定。
           属性:版本号   字符编码   是否是独立存在的xml文档
          <?xml version=”1.0” encoding=”编码表” standalone=”yes|no” ?>
          例如:
          <?xml version=”1.0”  encoding=”UTF-8” ?>
          在定义xml的文档声明时 <?之间不能有空白的内容        ?> 它们之间也不能有空格
          中间书写的属性使用空格隔开。

DTD:用来约束XML文件可以使用什么标签,标签里面能有什么属性。

           一个xml文件只能引入一个dtd约束,DTD引入方式有:

DTD可以单独写在文件中,也可以直接定义在xml中,可以在xml中引入第三方的公共DTD。

外部DTD的引入方式:外部DTD主要指的一个独立的DTD文件。
首先要书写DTD文件,然后在要被约束的xml文件中引入。

<!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">
文档根结点 指的是当前xml中的根标签。
SYSTEM  引入的系统中存在文件
"DTD文件的URL" DTD存放的位置

引入公共的DTD:
<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
文档根结点 指的是当前xml中的根标签。
PUBLIC  表示当前引入的DTD是公共的DTD

在xml中直接书写DTD
<!DOCTYPE  根标签名 [
具体的标签的约束
]>

schema:比dtd更强大,功能更全的xml约束文件

Schema文件本身就是使用xml文件书写的,同时它对需要约束的xml中的数据有严格的限定。

学习Schema主要来学习W3C组织定义的如何在Schema中去约束xml的标签以及属性,还有属性的数据类型,以及标签中子标签的顺序。
要定义一个Schema文件,这时它的扩展名必须是.xsd。

定义schema文件:

在定义Schema文件的时候,由于这个Schema文件本身就是xml,它也要受到别的约束。而这个约束是W3C组织提前定义好的,
在Schema文件中需要提前引入进来在根标签中使用属性进行进入:

这里要xml如何命名空间 -xmlns属性

 命名空间是在元素的开始标签的xmlns属性中定义的,语法是    xmlns:前缀="uri"

例如: xmlns:context="http://www.springframework.org/schema/context"

注意,命名空间URI不会被解析器用于查找信息,其目的是赋予命名空间一个唯一的名称

默认的命名空间,为元素定义默认的命名空间可以让我们省去在所有的字元素中使用前缀的工作

例如:

<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>

xml(可扩展标记语言)dtd(xml约束,文档类型定义)schema(功能比dtd更强大,用以定义xml文件。后缀名为xsd文件)

在xml中引入schema使用方式

xml(可扩展标记语言)dtd(xml约束,文档类型定义)schema(功能比dtd更强大,用以定义xml文件。后缀名为xsd文件)

在定义Schema文件的时候,需要在<schema>根标签中使用
targetNamespace  属性定义当前schema定义名称(只是一个分配的名字,根本没有指向任何文件),在被约束的xml文件中先根据这个名称引入当前的schema文件,然后在使用
xsi:schemaLocation=””    引入具体的schema文件。(因为targetNamespace属性定义的schema名称,只是一个名称而已,所以在xml文件中需要通过schemaLocation来声明指定所遵循的Schema文件的具体位置)
(xsi:schemaLocation 使用它引入某个schema时,先要使用名称空间, 空格 ,文件名)