XML2 - 约束

  • DTD
  • schema

schema 与 DTD 的对比:

  • schema符合XML的语法结构
  • DOM、SAX等容易解析出XML Schema
  • Schema对 名称空间 支持得比较好
  • Schema支持更多的数据类型、自定义的数据类型
  • 约束能力强大
  • 不能像DTD一样定义实体,比DTD更复杂

DTD

Document Type Definition 全文档类型定义

book.dtd 文件


 //复杂标签,只能有一个根节点为书
 
 //简单标签



引用DTD,如下xml文件




 

<书架>
    <书>
        <书名>JavaWeb开发大全
        <售价>g
        <作者>34
        <简介>不错啊
    

DTD的元素定义:

 

使用规则如下:

使用规则 含义
(#PCDATA) 指示元素的主体内容只能是普通的文本.(Parsed Character Data)
EMPTY 用于指示元素不能包含任何子元素和文本,仅可以使用属性。比如
ANY 用于指示元素的主体内容为任意类型。
(子元素) 指示元素中包含的子元素
(子元素) 案例
逗号分开,说明必须按照声明顺序去编写XML文档
用“ ”分开,说明任选其一 AUTHOR EMAIL)
元素后面没有+*? 表示必须且只能出现一次
元素后面 + 表示至少出现一次,一次或多次
元素后面 * 表示可有可无,零次、一次或多次
元素后面 ? 表示可以有也可以无,有的话只能有一次。零次或一次

示例


DTD属性定义

 
属性类型 含义
CDATA 属性的取值为普通的文本字符串
ENUMERATED 枚举,只能从枚举列表中任选其一,如(鸡肉 牛肉 猪肉 鱼肉)
ID 属性的取值不能重复(不能只写数字)
约束 含义
#REQUIRED 属性必须出现
#IMPLIED 属性可有可无
#FIXED 属性的取值为一个固定值。语法:#FIXED "固定值"
直接值 属性的取值为该默认值

示例

 

DTD 与 XML文档关联的三种方式

  • 使用内部DTD 格式
  • 使用外部DTD
  • 使用网络DTD


        
         !ELEMENT 书 (书名,作者,售价)>             
        
    ]>






示例 使用内部DTD


        
                
            ]> 
<购物篮>
<肉 品种="鱼肉"/>
<肉 品种="牛肉"/>
<肉/>

DTD的实体定义
  • 实体用于为一段内容创建一个别名,可在XML文档中引用这段内容

    DTD中定义:
    XML中引用:&别名
    

schame

book.xsd文件




    

    
    
        
        
        
            
            
                
                
                
                
            
            
            
             
        
     
    
 


book.xml 文件



<书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://www.mango.cool/110"
        xsi:schemaLocation="http://www.mango.cool/110 book.xsd">
    <书>
        <书名>JavaWeb开发大全
        <作者>34
        <简介>不错啊
    
    

Schame约束,开发XML的过程

W3C预先定义元素和属性 --> schame文档 --> xml文档

名称空间的概念

每个约束文档都可以被赋予一个唯一的名称空间,名称空间用一个唯一的URI表示;尽管以http://开始,但是并不指向一个包含模式定义的文件。事实上,该url不指向任何文件,只是一个分配的名字

schema 示例 包含两个.xsd文件,一个.xml文件
company.xsd



    
        
            
                
                    
                        
                            
                            
                            
                            
                                
                                    
                                        
                                    
                                    
                                
                            
                        
                        
                        
                    
                
            
        
    




    
        
    

department.xsd



    
    
    

company.xml




    
         
        人力资源部
        
        王晓晓   
    

你可能感兴趣的:(XML2 - 约束)