schema约束

  通过schema来解决DTD的不足,dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型,比如 年龄只能是整数,在schema可以直接定义一个整数类型,schema语法更加复杂,schema目前还不能替换dtd。

  schema快速入门:

  1、创建一个schema文件,后缀名为”.xsd”,特别注意的一点是,在myelipse的new - >other 搜索不到.xsd,其实xsd也是一个xml文件,故搜索xml既可以。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,名称空间(targetNamespace)用一个唯一的URI表示 -->
<!-- 表示当前xml文件是一个约束文件,这是一个w3c提供的一个严格限制xml的约束文件,
    一般固定不变xmlns="http://www.w3.org/2001/XMLSchema" -->
<!-- 使用schema约束文件,直接通过这个地址引入约束文件,外部的xml使用该约束文件是通过该命名空间,
    可以随便你写,但是习惯写一个URL地址     targetNamespace="http://www.atguigu.cn" -->
<!-- 质量良好的    elementFormDefault="qualified" -->
<!-- 可以不写的,:tns值得是别名,取别名为tns.xmlns:tns="http://www.atguigu.cn"  -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.atguigu.cn" 
    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="string"></element>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

2)看简单元素和复杂元素,法则:有多少个元素就有多少个< element>

    <!-- 复杂元素 -->
    <element name="书架">
        <complexType>
            <sequence maxOccurs="unbounded">
                <element name="书">
                    <complexType>
                        <sequence>
                            <!-- 简单元素 -->
                            <element name="书名" type="string"></element>
                            <element name="作者" type="string"></element>
                            <element name="价格" type="string"></element>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>

3)在被约束的文件xml中引入该 约束的文件xsd 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 在Xml文件中书写标签时,可以通过名称空间声明(xmlns),来声明当前编写的标签来自哪个Schema约束文档。 -->
<!-- schemaLocation此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置,两者之间用空格分隔。 -->
<!-- 注意,在使用schemaLocation属性时,也需要指定该属性来自哪里。 -->
<!-- 表示这个xml是一个被约束的文件,特别注意这里的xmlns与约束文件不一样,差后面的instance部分
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance -->
<书架 xmlns="http://www.atguigu.cn"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.atguigu.cn book.xsd">
        <>
            <书名>JavaScript</书名>
            <作者>劳动</作者>
            <价格>12.0元</价格>
        </>
</书架>

 

  

posted @ 2017-08-23 15:22  liujiee2  阅读(168)  评论(0编辑  收藏  举报