zoukankan      html  css  js  c++  java
  • XML Schema初探

    Schema

    什么是Schema

      Schema(模式) :其作用与DTD一样,也是用于验证XML文档的有效性,只不过它提供了比DTD更强大的功能和更细粒度的数据类型。

      另外,Schema可以自定义数据类型。

      Schema也是一个XML文件,而DTD则不是。

         

     

     

     

    为何要Schema

    Schema文档结构

     

      所有的Schema文档,其根元素必须叫schema。

      schema可以包含属性,比如:

    <?xml version="1.0"?>
     
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.w3school.com.cn"
    xmlns="http://www.w3school.com.cn"
    elementFormDefault="qualified">
    
    ...
    ...
    </xs:schema>

      第一个xmlns后面的名字可以自由定义,一般是xsxsd,但是地址不可以改,是一定的:

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

      显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。

      同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs。

    targetNamespace="http://www.w3school.com.cn" 

      显示被此 schema 定义的元素 (自定义的element,即XML中的标签) 来自命名空间: "http://www.w3school.com.cn"。

    xmlns="http://www.w3school.com.cn" 

      指出默认的命名空间是 "http://www.w3school.com.cn"。

    elementFormDefault="qualified" 

      指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。

    一个Schema的例子

      下面这个例子是一个名为 "note.xsd" 的 XML Schema 文件:

    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.w3school.com.cn"
    xmlns="http://www.w3school.com.cn"
    elementFormDefault="qualified">
    
    <xs:element name="note">
        <xs:complexType>
          <xs:sequence>
        <xs:element name="to" type="xs:string"/>
        <xs:element name="from" type="xs:string"/>
        <xs:element name="heading" type="xs:string"/>
        <xs:element name="body" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    </xs:schema>

      

      XML文档加入对其的引用:

    <?xml version="1.0"?>
    <note
    xmlns="http://www.w3school.com.cn"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.w3school.com.cn note.xsd">
    
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
    </note>

      

      顺带介绍,如果上面的文档不用Schema,而是用DTD定义将会是这样:

    <!ELEMENT note (to, from, heading, body)>
    <!ELEMENT to (#PCDATA)>
    <!ELEMENT from (#PCDATA)>
    <!ELEMENT heading (#PCDATA)>
    <!ELEMENT body (#PCDATA)>

    Schema的数据类型

    简单类型

      一.内置的数据类型(built-in data types)

      内置的数据类型又分为两种:

      1.基本的数据类型

      2.扩展的数据类型

      二.用户自定义数据类型(通过simpleType定义)

    复杂类型(通过complexType定义)

     

     

    Schema元素

      

      关于元素的详细说明可以参见 XML Schema参考手册:

      http://www.w3school.com.cn/schema/schema_elements_ref.asp

     

     

     

    参考资料

      W3school XML Schema:

      http://www.w3school.com.cn/schema/schema_intro.asp

      http://www.w3school.com.cn/schema/schema_schema.asp

      圣思园张龙老师视频教程。

      XML工具软件:XMLSpy。

  • 相关阅读:
    CoreLocation
    通知(NSNotificationCenter)
    加载xib文件
    UITextField
    UIButton
    UILabel
    UIAlertController
    layoutSubviews
    Java AQS详解(转)
    Java中synchronized
  • 原文地址:https://www.cnblogs.com/mengdd/p/3112578.html
Copyright © 2011-2022 走看看