先来看一个schema    book.xsd

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

<schema xmlns="http://www.w3.org/2001/XMLSchema" tagetNamespace="http://www.sfg.cn" elementFormDefault="qualified">

  <element name="书架">          ------>定义一个标签

    <complexType>      ------>复合类型  就是该标签含有子标签

      <sequence maxOccurs="unbounded">           ------>含有不限定个数的子标签

        <element name="书">          ------>定义一个子标签

          <complexType>

            <sequence>

              <element name="书名" type="String" />     ------>定义一个文本子标签

              <element name="作者" type="String" />

              <element name="价格" type="String" />

            </sequence>

          </complexType>

        </element>

      </sequence>

    </complexType>

  </element>

</schema>

这都很容易明白,这里重点需要说的是

xmlns="http://www.w3.org/2001/XMLSchema"

tagetNamespace="http://www.sfg.cn" 

schema规范

规范1:所有的标签和属性都需要有定义

疑问:schema也是一个标签,那么schema是由谁定义的?

规范2:所有的schema文件都要有一个命名空间namespace

疑问:schema的namespace在哪里指定?    

tagetNamespace="http://www.sfg.cn"  属性指定schema的namespace,值为一个URL, URL可以是不存在的。

这里又回到了第一个疑问tagetNamespace、schema是谁定义的,这个时候就需要引入名称空间。

疑问:如何引入namespace来约束tagetNamespace、schema?

xmlns="http://www.w3.org/2001/XMLSchema" 这个属性是用来引入namespace的,值是固定的,W3C已经固化到解析器中

附加说明:elementFormDefault是一个枚举值,说明namespace默认只关联了根标签

根据以上的schema知道XML的格式为:

<书架>

  <书>

    <书名>文本</书名>

    <作者>文本</作者>

    <价格>文本</价格>

  </书>

</书架>

xmlns="http://www.sfg.cn“ 在XML中也要引入schema中定义标签的命名空间

规范3:如果引入的schema不是W3C组织定义,必须指定schema文件的位置

疑问:schema的位置由谁来指定?

schemaLocation="http://www.sfg.cn book.xsd"  属性值格式为: namespace值 + 空格 + schema文件名

疑问:该XML文件中的schemaLocation属性又是由谁来引入的呢?

xmlns="http://www.w3.org/2001/XMLSchema-instance"

疑问:这个时候引入了两个namespace,两个相同属性xmlns,解析器不知道schemaLocation属性由谁来约束?

这里就需要对其中一个进行别名 :xmlns:dd="http://www.w3.org/2001/XMLSchema-instance" 别名为dd,那么后面这个namespace来约束的,就需要别名来引导 dd:schemaLocation="http://www.sfg.cn book.xsd"

得出XML的内容如下

<书架 xmlns="http://www.sfg.cn“ 

   xmlns:dd="http://www.w3.org/2001/XMLSchema-instance"

        dd:schemaLocation="http://www.sfg.cn book.xsd">

  <书>

    <书名>文本</书名>

    <作者>文本</作者>

    <价格>文本</价格>

  </书>

</书架>

posted on 2014-12-27 14:13  好高务远  阅读(520)  评论(0)    收藏  举报