文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
Ajax核心:XMLHTTP组件相关技术资料
远程获取内容,并将内容存在本地电脑..
xmlhttp组件获取远程文件并筛选出目标..
XMLHTTP对象及其方法
把HTML表单提交的数据转化成XML文件
利用XMLHTTP无刷新添加数据之Post篇
Js+Xml:不刷新页面获取对应网址的网页..
xml(元标记语言)学习基础一
Java语言编程中更新XML文档的常用方法..
简析JAVA中的XML编程
XML及其技术指南
XML教程(2)--XML元素与XML属性值
XML教程(1)--严格的语法
从XML到Java代码的数据绑定之一
神奇的XML--突破CGI权限的约束
基于XML的数据库总体分析
XML 中的常见问题(3)
XML 中的常见问题(2)
XML 中的常见问题(1)
一个简单的XML Schema的例子
Web设计中如何使用XML数据3
Web设计中如何使用XML数据2
Web设计中如何使用XML数据1
大话XML(3)XML的语法
构造未来Web页面的工具语言-- XML
不离开页面刷新数据
文件上传的实现
XML的产生
将XML文件链接至HTML网页
动态产生XML文档的几种方式


技术教程 -> XML教程 ->  
XML简明教程第6课 使用XML Schema
来源:转载   人气:728   录入时间:2007-11-8
    什么是XML Schema?
   XML Schema是一个基于XML的语法或schema规范,用来定义XML文档的标记方式。XML Sc
   hema是一个由Microsoft建议的schema规范,它与文档类型定义(DTD)相比具有很大的
   优势,而DTD是最初用来定义XML模型的schema规范。DTD存在很多缺点,包括使用非XML
   语法,不支持数据类型定义,不具有扩展性等。例如,DTD不允许把元素内容定义为另外
   一个元素,或字符串。想了解更多有关DTD的内容,可以参考W3C XML建议书。 XML Sch
   ema从几个方面改善了DTD,包括使用XML语法,支持数据类型定义和名域。例如,XML S
   chema允许你把一个元素说明为一个integer, float,Boolean, URL等类型。
   在Internet Explorer 5中的XML解析器可以解析使用DTD或XML Schema的XML文档。
   如何建立XML Schema?
   请在下面的XML文档中找一找每个节点的schema声明。
   <class xmlns="x-schema:classSchema.xml">
    <student studentID="13429">
    <name>Jane Smith</name>
    <GPA>3.8</GPA>
    </student>
   </class>
   你会注意到在上面文档中默认的名域是“x-schema:classSchema.xml”。这告诉解析器
   根据URL(“classSchema.xml”)上的schema(x-schema)来解析整个文档。
   下面是上面那个文档的完整的schema。注意schema的根元素中的名域声明。第一个(xml
   ns=”urn:schemas-microsoft-com:xml-data”)表明这个XML文档是一个XML Schema。第
   二个(xmlns:dt=”urn:schemas-microsoft-com:datatypes”)允许schema处理者在Elem
   entType和AttributeType声明中的type属性前加dt前缀来说明元素的类型和内容的特征
   。
   <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mi
   crosoft-com:datatypes">
    <AttributeType name='studentID' dt:type='string' required='yes'/>
    <ElementType name='name' content='textOnly'>
    <ElementType name='GPA' content='textOnly' dt:type='float'/>
    <ElementType name='student' content='mixed'>
    <attribute type='studentID'/>
    <element type='name'/>
    <element type='GPA'/>
    </ElementType>
    <ElementType name='class' content='eltOnly'>
    <element type='student'/>
    </ElementType>
   </Schema>
   用来定义元素和属性的声明元素如下所示:
   元 素
    说 明
   ElementType 把类型和条件赋给一个元素,可以包含子元素
   AttributeType 把类型和条件赋给一个属性
   attribute 声明以前定义过的属性类型可以出现在名为ElementType的元素的作用域中
   element 声明以前定义过的元素类型可以出现在名为ElementType的元素的作用域中
    
   Schema的内容以最深层的元素的“AttributeType”和“ElementType”声明开头。
   <AttributeType name='studentID' dt:type='string' required='yes'/>
   <ElementType name='name' content='textOnly'>
   <ElementType name='GPA' content='textOnly' dt:type='float'/>
   ElementType声明后接着就是它的属性和子元素,如果一个元素有属性或子元素,必须把
   这种方法包含在它的ElementType声明中,或者是必须在它们自己的 ElementType 或 A
   ttributeType声明中进行前导声明。
   <ElementType name='student' content='mixed'>
    <attribute type='studentID'/>
    <element type='name'/>
    <element type='GPA'/>
   </ElementType>
   不同于DTDs,XML Schema允许有一个开放的内容模式,你可以进行定义数据类型、使用
   默认值等等操作而不必限定内容。
   在下面的schema中,<GPA> 元素的类型被定义并有一个默认值,但在 <student> 元素中
   没有其他节点被声明。
   <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mic
   rosoft-com:datatypes">
    <AttributeType name="scale" default="4.0"/>
    <ElementType name="GPA" content="textOnly" dt:type="float">
    <attribute type="scale"/>
    </ElementType>
    <AttributeType name="studentID"/>
    <ElementType name="student" content="eltOnly" model="open" order="many
   ">
    <attribute type="studentID"/>
    <element type="GPA"/>
    </ElementType>
   </Schema>
   上面的schema允许你只验证你所关心的区域,这使你对文档的验证级别有更多的控制,
   并允许你使用schema提供的一些特性而不必严格确认。
   尝试一下!
   试着处理一下下面的XML文档的schema。
   <order>
    <customer>
    <name>Fidelma McGinn</name>
    <phone_number>425-655-3393</phone_number>
    </customer>
    <item>
    <number>5523918</number>
    <description>shovel</description>
    <price>39.99<price>
    </item>
    <date_of_purchase>1998-10-23</date_of_purchase>
    <date_of_delivery>1998-11-03</date_of_delivery>
   </order>
   如果你处理完schema,在XML Validator中运行 .
   下载MSDN Online的区域中提供了一套 XML sample files, 包括一个有相关schema的XM
   L文档。下载这些示例程序可以与XML文档和schema一起运行。如果你想要根据一个sche
   ma来测试XML的有效性,可以从XML Validator 处下载文档或查看Mime Type Viewer中的
   XML文件。
   一些说明:
   ElementType和 AttributeType 声明必须放在attribute和element内容声明之前。例如
   ,在上面的schema中,<GPA>元素的ElementType声明必须放在<student>元素的Element
   
   Type声明之前。 
   order属性的默认值是建立在content属性的值上的。当content值为“eltOnly”时,or
   der默认值是seq。当content值为“mixed”时,order默认值是“many”。see 如果想了
   解有关这些缺省值的信息,可以查看 XML Schema Reference。
   
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987