详解xml约束中schema约束

版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.csdn.net/qq_41517071/article/details/82873237

开始时间:2018年9月27日20:56:14

结束时间:2018年9月27日23:18:30

累计时间:2小时

xml自定义: 

一: 约束
 1: dtd约束: 
 2: schema 约束: 
 优点:  比dtd 更能更加强大。 提供了更加丰富的数据类型。 
     
    XML Schema 可针对未来的需求进行扩展 
    XML Schema 更完善,功能更强大 
    XML Schema 基于 XML 编写 (schema本质上就是一个 xml文件)
    XML Schema 支持数据类型 (提供的更加丰富的数据类型)
    XML Schema 支持命名空间  

(同一个xml文件可以被不同的schema约束。 通过名称空间约束)通过名称空间来区分多个schema约束。

那么何为不同的名称空间?https://blog.csdn.net/CristianoJason/article/details/51147028

好比同一个文件夹下不能存放同名文件,放在不同的文件夹下 即可。所以放在不同包下面就ok啦。
     
 3: 原理:  图解: 

 


 4: 入门的案例: 
  
   a: 编写一个被约束的文件:  person.xml
   b: 编写一个schema文件: 本质上也是一个xml文件: 
                 后缀名称 xsd
                 
   c: 文件内容的说明: 
   <?xml encoding="" version=""?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.example.org/person" 
            elementFormDefault="qualified">
             
    </schema> 
    
    解释说明: 
     schema: xml当中的根标签: 
     xmlns="http://www.w3.org/2001/XMLSchema" 
              当前的xml文件是一个约束文件。
              
     targetNamespace="http://www.example.org/person" 
           被约束文件使用。  被约束的文件通过引入该地址,引入当前的schema文件。 
        
     elementFormDefault="qualified">
             元素的默认格式
             
   d: 开发具体的约束: 
     (1) 看xml文件当中有多少个元素: <element>
     (2)观察该元素是简单的元素还是复杂的元素:
      复杂元素: 
       <element name="元素的名称" >
           <complexType>
                 <sequence>
                    //简单元素:   name="简单元素的名称" type="简单元素值的类型"
                     <element name="" type=""/>
                 </sequence>
            </complexType>
       </element>
       
       复杂元素: 
        <sequence> 表明元素必须按照顺序出现。 
        <all> 元素的顺序可以任意。 但是元素出现的次数有且仅有一次。 
        <choice> 简单元素只能出现其中的一个。

具体可以看这个人的:
   简单元素: https://blog.csdn.net/CristianoJason/article/details/51282739简单元素的约束写的很清楚了

   复杂元素:https://blog.csdn.net/CristianoJason/article/details/51327041(看了这个人两篇写的还行)

*简易元素:仅包含文本(文本可以有很多类型,也可以是自定义的类型),但不会包含任何其他的元素或属性。
       maxOccurs="unbounded" 出现的次数 不受任何的限制。 任意次。 
       maxOccurs="1" 简单元素只能出现一次; 修改值, 指定简单元素出现的次数。

复杂元素可以层层嵌套  (如果复杂元素里面还是复杂元素)
        
       
    e: 在被约束文件当中引入schema文件:(图解)

xmls:是可以自定义的名字

右边的 xsi:也可以自定义,但是官方建议xsi  (为了防止和下面重名)

instance意思是实例 指的是右边是左边约束的一个实例。

右边第三个  有两个参数  


    
  
  5:schema约束  分两种:

标签约束:类似于

  这种约束

        <sequence> 表明元素必须按照顺序出现。 
        <all> 元素的顺序可以任意。 但是元素出现的次数有且仅有一次。 
        <choice> 简单元素只能出现其中的一个。

约束属性: 
  
    (1)在</complexType> 之前: 写一个<attribute  name="" type="" use="">
       name:属性的名称:  自定义
       type:  属性的类型:   int string  约束文件提供的合法的类型
       use:属性的约束:    
               值:required 属性必须: 
               optional 可选择
               prohibited 禁止的: 属性不能出现

再放一个例子

执行约束的文件:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://www.example.org/person" 
 xmlns:tns="http://www.example.org/person" 
 elementFormDefault="qualified">
 
 <element name="person">
 	<complexType>
 		<!-- <sequence> -->
 		<!-- <all> -->
 		<choice>
 		      <!-- 简单元素:  -->
			 <element name="name" type="string" maxOccurs="unbounded"></element>
			 <element name="sex" type="string"></element>
			 <element name="des" type="string "></element>
		 </choice>
	   <!--  </all> -->
 		<!-- </sequence> -->
 		
 		<!-- 加入属性约束 -->
 		<attribute name="id" type="int" use="required">
 		     
 		</attribute>
 		
 		<attribute name="code" type="string" use="prohibited"></attribute>
 	</complexType>
 </element>
 
</schema>

被约束的文件:

<?xml version="1.0" encoding="UTF-8"?>

<person
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.example.org/person" 
   xsi:schemaLocation="http://www.example.org/person person.xsd" 
   id="21">
 
  <name>ss</name>
  <name>ss</name>
  <name>ss</name>
  <name>ss</name>
 
  
</person>


    
           
 
   
   
   
  
            
     
   
  

猜你喜欢

转载自blog.csdn.net/qq_41517071/article/details/82873237