注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

曹兆领的博客

有志者事竟成,破釜沉舟,百二秦关终属楚!

 
 
 

日志

 
 

XML教程(转)  

2007-08-30 15:48:52|  分类: Java开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

详细请参考http://book.chinaz.com/XML/xml0005.htm

 

XML教程

翻译:褚健

处理XML元素

2

处理XML文档

3

处理XML数据岛

4

类似于文档对象访问一个XML数据岛

5

访问XML对象模式

6

在XML文档中使用数据类型

7

访问经过类型定义的XML值

8

XML Schema

处理XML元素返回

处理XML文档返回

处理XML数据岛返回

返回

访问XML对象模式返回

在XML文档中使用数据类型返回

访问经过类型定义的XML值返回

XML Schema

什么是XML Schema?

W3C XML Activity Page 声明:“尽管XML1.0提供了一种机制,文档类型定义(DTD)给标记的使用加了限制,但是对XML文档的自动处理需要更严格更全面的工具。需要主要体现在对应用软件各部分的结合、文档结构、属性和数据类型等等的约束。W3C XML Schema工作组正忙于定义XML文档的结构、内容和语义。”

微软IE5支持XML Schema,这项预先展示的技术是建立在递交给W3C的XML-Data草案的基础上的。XML Schema可被认为是XML-Data草案的子集,它符合文档内容描述(DCD)提议的特点。

IE5中的XML解析器能够根据文档类型定义(DTD)或XML Schema解析XML文档。XML Schema是用来声明内容模式的基于XML的语法。它有DTD所有的功能,并且还有其他的功能如数据类型定义。

如何建立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的根元素中的名域声明。第一个(xmlns=”urn:schemas-microsoft-com:xml-data”)表明这个XML文档是一个XML Schema。第二个(xmlns:dt=”urn:schemas-microsoft-com:datatypes”)允许schema处理者在“ElementType”和“AttributeType”声明中的“type”属性前加“dt”前缀来说明元素的类型和内容的特征。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-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>

schema用“Schema”元素开头,“Schema”元素包括schema名域的声明,在本例中还包括数据类型名域的声明。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 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-microsoft-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提供的一些特性而不必严格确认。

一些说明:

  • “ElementType”和“AttributeType”声明必须放在“attribute”和“element”内容声明之前。例如,在上面的schema中,“GPA”元素的“ElementType”声明必须放在“student”元素的“ElementType”声明之前。

  • “order”属性的默认值是建立在“content”属性的值上的。当content值为“eltOnly”时,order默认值是“seq”。当content值为“mixed”时,order默认值是“many”。

  评论这张
 
阅读(131)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017