XML Schema约束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML Schema约束相关的知识,希望对你有一定的参考价值。

schema规范中:
    1. namespace : schema文件的标识属性,相当于id,每个schema文件需要有一个唯一的namespace值;
    2. targetNameSpace :指定当前schema文件的namespace值,它的值是一个url(很有可能不存在);
    3. xmlns :引入一个schema约束,它的值为一个schema的namespace值
            属性? : 用xmlns属性
            属性值: 对应的schema文件的id(namespace值)
    4.schemaLocation:如果引入的schema不是w3c组织定义,必须指定schema文件的位置;
    5.element :定义标签(常用类型:string,decimal,integer,boolean,date,time)

    6.elementFormDefault:控制元素。有两个取值:"qualified"-在XML文档中使用局部元素时,必须使用限定短名作为前缀;unqualified-在XML文档中使用局部元素时,可以省略限定短名;

    7.attributeFormDefault:控制属性的。用法与elementFormDefault一样;

    8.如果引入了N个约束, 需要给n-1个取别名(如下:xsd为w3c约束的别名);

复杂类型:一个元素如有属性或者包含子元素,那么这个元素就是复杂类型。复杂类型使xs:complexType定义。复杂类型要么具有简单内容,要么具有复杂内容。内容是指在开始标签和结束标签之间的字符数据和子元素。简单内容是指内容只具有字符数据没有子元素,简单内容是用xs:simpleContent元素来定义(简单内容要有属性,否则等同于简单类型)。除此之外的就是复杂内容,使用xs:complexContent来定义。

      xsd:attribute元素的use、default、fixed属性

     use属性指示xsd:attribute元素是否需要出现,其有效值为:optional(可选的,use属性的默认值)、prohibited(禁止使用属性)、required(属性是必须的)。对全局声明的属性不能使用use属性。

 例子:book.xsd

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   targetNamespace="http://www.ciyo.com/bookSchema"
   elementFormDefault="qualified">
   <xsd:element name="bookrack">
      <xsd:complexType>
         <xsd:sequence>
            <!--maxOccurs :限定元素个数,一个书架最多基本书-->
            <xsd:element name="book" maxOccurs="3">
               <!--complexType:复杂类型-->
               <xsd:complexType>
                  <!--sequence:有顺序-->
                  <xsd:sequence>
                     <xsd:element name="name" type="xsd:string" />
                     <xsd:element name="author">
                        <xsd:complexType>
                           <xsd:sequence>
                              <xsd:element name="firstname" type="xsd:string"/>
                              <xsd:element name="lastname" type="xsd:string" />
                           </xsd:sequence>
                        </xsd:complexType>
                     </xsd:element>
                     <xsd:element name="price">
                        <!--simpleType:简单类型-->
                        <xsd:simpleType>
                           <!--restriction:限定-->
                           <xsd:restriction base="xsd:integer">
                              <!--minInclusive:最小值;pattern :正则;length:长度;enumeration:枚举;-->
                              <xsd:minInclusive value="0"/>
                              <!--maxInclusive:最大值-->
                              <xsd:maxInclusive value="120"/>
                           </xsd:restriction>
                        </xsd:simpleType>
                     </xsd:element>
                     <xsd:element name="desc">
                        <!--complexType:复杂类型-->
                        <xsd:complexType>
                           <!--simpleContent:简单内容-->
                           <xsd:simpleContent>
                              <xsd:extension base="xsd:string">
                                 <!--use属性: optional:可选; required:必填;prohibited:禁用属性-->
                                 <!--default属性:默认值 EN;-->
                                 <!--fixed属性:指示固定值,不管该属性出现不出现,该属性的值都是EN-->
                                 <xsd:attribute name="lang" use="required" default="EN"/>
                              </xsd:extension>
                           </xsd:simpleContent>
                        </xsd:complexType>
                     </xsd:element>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>
</xsd:schema>

  book.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--书架-->
<bookrack xmlns="http://www.ciyo.com/bookSchema"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
   xsd:schemaLocation="http://www.ciyo.com/bookSchema book.xsd">
   <!--书-->
   <book>
      <!--书名-->
      <name>javascript开发</name>
      <!--作者-->
      <author>
         <firstname>John</firstname>
         <lastname>Smith</lastname>
      </author>
      <!--价格-->
      <price>100</price>
      <!--描述-->
      <desc lang="EN">EN</desc>
   </book>
</bookrack>


restriction数据类型的限定:

技术分享


本文出自 “ciyo技术分享” 博客,请务必保留此出处http://ciyorecord.blog.51cto.com/6010867/1928564

以上是关于XML Schema约束的主要内容,如果未能解决你的问题,请参考以下文章

Spring怎么查找xml和schema约束

Schema约束

xml的schema约束(Java)

在C++中如何用schema校验xml文件

XML的Schema约束

XML Schema约束