XML约束_schema约束

1. 什么是schema约束?优势在哪?
 XML的约束有两种,分别是dtd约束和schema约束。因为dtd约束有很大的局限性,所以我们通常都使用schema约束。
优势:

  • XML schema符合XML语法结构,并且对名称空间有很好的支持性。dtd不可扩展并且不支持名称空间。
  • schema约束比dtd约束支持的数据类型更多,并且支持用户自己定义新的数据类型。dtd只支持简单的数据类型。
  • DOM和SAX等xml API更容易解析 xml schema文件。
  • schema的约束能力更强大,可以对xml实例文档做出细致的语义限制。

2. XML schema约束开发
 XML Schema 文件自身就是XML文件,但他的扩展名通常为.xsd。和xml文件一样,xml schema文档也必须要有一个根节点,并且这个根节点就是schema。
引用流程
<1>引入W3C的名称
 在根节点上,使用属性xmls,这个属性是xml的名称空间(namespace)。xmlns="http://www.w3.org/2001/XMLSchema"

 所谓的namespace(名称空间)就是 在编写完XML约束文档后,将这个文件中声明的元素绑定到一个URI地址上,而这个URI地址也就是名称空间。以后在XML文件中可以通过URL来引用绑定名称空间来的元素。
 在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,名称空间用URI(Uniform Resource Identifier:统一资源标识符)来表示。

<?xml version="1.0" encoding="UTF-8"?>
    <!--在根节点schema上引入xmlns-->
<schema xmlns="http://www.w3.org/2001/XMLSchema">
</schema>

<2>编写元素其子元素

    * 定义元素
        * <element name="书架"></element>
    * 判断是否是复杂还是简单的元素
        * 如果是简单 在element有属性 type="数据的类型"    
        * 如果是复杂 
            * 声明标签是复杂的元素    <complexType>
            * 子元素之间的关系  <sequence>
    * 起名:targetNamespace    目标名称空间(起名)
        * 值是任意的:http://www.itcast.cn/1110

    * elementFormDefault    : 
        * qualified(使用) :质量好的
        * unqualified       :质量不好的

    * 编写属性
        * <attribute name="出版社" type="string" use="required" ></attribute>
            * name  属性名称
            * type  属性类型
            * user  属性约束

例如:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itcast.cn/1110" elementFormDefault="qualified">

    <!-- 复杂元素 -->
    <element name="书架">
        <!-- 复杂元素 -->
        <complexType>
            <!-- 有顺序的 -->
            <sequence maxOccurs="unbounded">
                <element name="书">
                    <!-- 复杂的元素 -->
                    <complexType>
                        <!-- 有顺序的 -->
                        <sequence>
                            <!-- 简单元素 -->
                            <element name="书名" type="string"></element>
                            <element name="作者" type="string"></element>
                            <element name="售价" type="double"></element>
                            <element name="简介" type="string"></element>
                        </sequence>

                        <!-- 书的属性 -->
                        <attribute name="出版社" type="string" use="required" ></attribute>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

 在编写schema约束文档时的注意事项:
 targetNamespace元素:指定schema文档中声明的元素属于哪个名称空间的。
 elementFormDefault元素:指定局部元素是否受到该schema指定targetNamespace指定的名称空间的限制。
 attributeFormDefault元素:指定局部属性是否收到该schema指定targetNamespace所指定的名称空间限定。

3. 使用对比注意事项
对比

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值