XML详细讲解(在java需掌握的程度)<一>:如何写XML文件——DTD约束&Schema约束

XML详细讲解(在java需掌握的程度)<一>:如何写XML文件——DTD约束&Schema约束,第1张

一,XML简介·

xml全称为 extensible markup language,可扩展性标记语言,所有浏览器都有xml的解析引擎,测试xml文件时,可直接在浏览器中执行。xml主要用来存储数据和传输数据(而非展示数据),是两个服务器进行数据交互的一种方式。

二,XML基本语法规范

1,文件的扩展名是.xml;

2,文件的第一行必须是,(其中可包含一些属性值);

3,xml中只能有一个根标签,同时标签严格区分大小写,以及每个标签须有结束标签;

4,xml文件中为自定义标签;

范例:演示xml文件的基本格式(bookstore.xml)



    
        水浒传
        施耐庵
        60
    

三,XML基础知识

<一>xml注释:

                               

<二>文档声明的属性值:

           1,所有的属性值必须用英文双引号括起来;

           2,version:版本号,目前流行的任然是1.0;

           3,encoding:声明编码格式;

           4,standalone:说明文档是否独立,即是否依赖于其他文档;

<三>实体:

         xml文件不能解析特殊字符,如<,>,=等等,同时对表达式不做处理,仅仅存储它们;因此在xml中有一套对应的实体转换规则:

最常用的转义字符列表
字符  说明        实体
      空格	       	
<	  小于	      <	
>	  大于	      >
&	  &符号	      &
"	  双引号	  "	
©	  版权	      ©	
®	  已注册商标	  ®	
™	  商标(美国) ™	
×	  乘号	      ×	
÷	  除号	      ÷

<四>自定义标签规范

          1,不能以数字或标点符号开始;

          2,名称不可以包含数字和其他字符;

          3,不能以xml开始;

          4,不可以包含空格;

<五>专业术语与xml文件的数据结构

         xml数据是以树结构来进行存储的,根节点又称为根元素,即根标签,从根节点往下,依次称为一级元素,二级元素,元素(element)也可称为节点(node)

    

四,约束文档

      如果没有约束,我们的数据将会非常混乱无章,如下面的一个xml文件:



    
        水浒传
        施耐庵
        60
    
    
        红楼梦
        曹雪芹
        
        读此书获益匪浅
      

上面的书没有remark标签,但是下面的书却有,而且《红楼梦》没有写明价格。这种数据不一致的情况需要我们使用一个约束来规范我们的数据。xml有两种约束:DTD约束和Schema约束。

<一>DTD约束

       DTD,Document Type Difinition,文档约束,这种约束是使用最广泛的约束(时间原因),但是功能不如Schema约束。

1,DTD约束类型

       有两种约束,一种是将约束写在一个文件扩展名为.dtd中,然后通过在xml文件中引入外部DTD约束,一种是直接在xml文件中写DTD约束。

2,DTD约束语法(以范例讲解)

        <1> 约束写在一个文件扩展名为.dtd中

               小编为了方便读者的阅读,对重点进行了标红。这是一个bookstore.dtd文件:









下面讲解上述范例:

@约束语法的基本格式是: 

@第一行:.dtd文件本质还是一个xml文件,因此第一行代码任然是不变的;

@第二行:对根元素进行约束,约束了根元素的子元素有哪些,每个子元素出现的个数(默认为一次)———— 

每个子元素后可跟数量字符:

+    1~n次
?   0~1次
*    0~n次

@第三行:对一级子元素进行约束,约束一级子元素的元素(即二级元素)有哪些以及可出现次数

@第四行~~第六行:对二级元素进行约束,约束了数据类型,在DTD约束中只有一种类型,即PCDATA,字符串类型(另外的一种是声明为 ANY,ANY声明的元素可包含可解析数据组合,其语法格式为  。————  ,这儿也可进行嵌套,即在括号()中写三级元素。

@第七行:这一行是对book元素的属性进行约束,属性约束语法格式如下:

             

属性类型及默认值见下表(常用的塔配是 ID+#REQUIRED):

常用的属性类型
CDATA值为字符数据(字符串)
(en1|en2|...)值为枚举列表中的一个
ID值为唯一的id,不能重复,不能以数字开头
所有默认值
属性的默认值
#REQUIRED属性值是必须的
#IMPLIED属性值不是必须的
#FIXED  value属性值是所给定的值

         <2>直接在xml文件中写DTD约束

            语法格式(写在xml文档的第二行):   ]>



    
    
    
    
    
    
    
]>

    
        水浒传
        施耐庵
        60
    
    
        红楼梦
        曹雪芹
        75
    
    
        悲惨世界
        雨果
        30
    

3.引入外部DTD文档约束

        当在外部写好约束后,需要将约束引入需要约束的xml文件(写在第二行),有两种引入方式。

       <1>引入本地外部文件约束:

     语法:

       <2>引入网上的外部文件:

     语法: 

<二>Schema约束

       Schema约束便不是为了替代DTD而出生的,只是作为优化完善而诞生的。Schema约束功能相比DTD是非常强大的存在,然而强大的东西就会很复杂。Schema约束相比DTD约束有以下优势

①面向对象,可以继承,扩展;②能够对数据详细的约束,以及元素出现的顺序,次数,还支持正则表达式等·;③支持命名空间,在不同的命名空间可以有重复元素。

       Schema约束只能写在外部文件中,且文件扩展名为.xsd。

       为了方便读者快速入门掌握,小编依旧以范例讲解。

 1,对Schema头部约束的讲解



          第一行代码无需多言。第二行中现在来依次讲解。

         <1>  xmlns="http://www.w3.org/2001/XMLSchema"   :   显示schema约束中用到的元素和数据类型来自命名空间“http://www.w3.org/2001/XMLSchma”,有时这行代码也会写成——————“xmlns:xs="http://www.w3.org/2001/XMLSchema"”,显示schema约束中用到的元素和数据类型来自命名空间“http://www.w3.org/2001/XMLSchma”,同时元素名前需带有前缀 xs:。(此行代码固定)

         <2>targetNamespace="http://www.example.org/students"  :  声明被此schema定义的元素属于命名空间"http://www.example.org/students",注意只是声明,而不能说明当前schema默认使用该命名空间。(example部分可自己写,students是根标签名)

         <3>xmlns:tns="http://www.example.org/students"  : 默认命名空间。

         <4>elementFormDefault="qualified"  :  指出任何XML实例文档所使用的且在此schema中声明过的元素必须被命名空间限定。(此行代码固定)

2,Schema约束的具体约束




   
       
           
             
                        
               
               
               
                   
                       
                           只能为男或者女
                       
                       
                           
                                                  
                       
                   
               
               
               
                   
                       
                           年龄必须在15~50岁
                       
                       
                           
                           
                       
                   
               
                             
               
                   
                       
                       
                           
                              主修科目最少为一门,最多为三门
                                                    
                       
                       
                   
                
                
             
             
                      
           
                                            
       
      

      <1>标签讲解

      ①&:当一个元素(称为A)的子元素(称为B)存在子元素(称为C)时(好绕口,哈哈哈),必须使用标签包裹元素B,如果不满足上述条件则必须使用包裹元素B。

      ②&&表示元素出现的顺序必须是schema约束中的顺序;表示元素可以以任意顺序出现;表示简单元素只能出现一个。

      ③&:包裹部分表示注解,包裹部分为注解内容。

      ④:此标签包裹用来写限制内容。

      ⑤&:约束范围为min~max。

      ⑥

3,引入Schema约束

        在xml文件的第二行写下面的代码:

  




      这一期写了四个小时,希望能给读者带来帮助,也希望兄弟们给小编点支持!!!下一期写如何解析XML文档!!!

     

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/722860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存