xml 约束:schema 约束

1、schema约束
   1) 语法:

xml 约束:schema 约束_第1张图片

    1   dtd语法: ,但是一个xml 只能有一个dtd 约束
    2   schema符合xml的语法,xml语句,一个xml中可以有多个schema

   多个schema使用名称空间区分(类似于java 的类是按照java包名来区分的是一个道理)
   2)数据类型

         XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。

        dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型,并且可以自定义
        比如 年龄 只能是整数,在schema可以直接定义一个整数类型
        schema语法更加复杂,结构复杂,不太容易操作,schema目前不能替代dtd

2、schema的快速入门

xml 约束:schema 约束_第2张图片
    创建一个schema文件 后缀名是 .xsd
        根节点
    在schema文件里面
        1 属性  xmlns="http://www.w3.org/2001/XMLSchema"
            - 表示当前xml文件是一个约束文件

如何区分,xml 和schema 哪一个是约束呢

   xml 约束:schema 约束_第3张图片
   写上了这一句就表示是约束文档

       2  targetNamespace="http://www.itcast.cn/20151111" 写网址的目的防止重复
            - 使用schema约束文件,直接通过这个地址引入约束文件
       3 elementFormDefault="qualified" //固定写法
    步骤
        (1)看xml中有多少个元素
           
        (2)看简单元素和复杂元素
            如果复杂元素
               
                   
                        子元素
                   

           

        (3)简单元素,写在复杂元素的
           
           
           
                   
                   
           

           

           

xml 约束:schema 约束_第4张图片

        (4)在被约束文件里面引入约束文件
                        xmlns="http://www.itcast.cn/20151111"
            xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd">

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                -- 表示xml是一个被约束文件

           xmlns="http://www.itcast.cn/20151111"
                -- 是约束文档里面 targetNamespace
            xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd">
                -- targetNamespace 空格  约束文档的地址路径
        xml 约束:schema 约束_第5张图片

xmlns: 表示名称空间,意思就是这个约束来自于含有这个字符串的schema文件

xsi :是别名

xml 约束:schema 约束_第6张图片

当随便加标签的时候就报错了,因为里面只能是出现name age  ,以为在schema 文件中只是定义了name,age.

    :表示元素的出现的顺序


    xml 约束:schema 约束_第7张图片

顺序和上面的不一样就报错了

  : 元素只能出现一次
    :元素只能出现其中的一个
    maxOccurs="unbounded": 表示元素的出现的次数
    :表示任意元素

    可以约束属性
        写在复杂元素里面
        写在 之前
        --
       
            - name: 属性名称
            - type:属性类型 int stirng
            - use:属性是否必须出现 required



	
		
			
			
			
					
					
			
			
			
			
		
	

 复杂的schema约束

company.xsd 



	
		
			
				
					
						
							
							
							
							
						
						
						
					
				
			
		
	

department.xsd 



 
 

company.xml 




	
		 
		100
		
		王晓晓   
	


            xmlns:dept="http://www.example.org/department"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd"
>
    引入多个schema文件,可以给每个起一个别名

   
       
        100
        想要引入部门的约束文件里面的name,使用部门的别名 detp:元素名称
       
        王晓晓   
   

你可能感兴趣的:(【操作,解析】,【xml,schema,dom4j,log4j】)