无论用于万维网开发、文档创建、还是商务伙伴之间的数据交换,作为一个十分灵活的文档设计与数据建模工具,XML正变得越来越重要。XML Schema规范实现了W3C推荐标准,因而提供了一种可替代DTD的方法,使开发人员能够更精确地结构化XML数据。就设计和使用基于XML的内容与数据来说,XML Schema提供了实现这类设计和最大化这类使用的关键要素。 本书介绍了相关的原理、术语及概念,并配有大量的实例进行说明,使读者对所学的知识有深刻的体验,并能学以致用。 简 介 对于许多XML支持者和信徒来说,自从XML这朵美丽的玫瑰花绽放以来,其花心中一直存在一个瑕疵。更糟的是,有些人认为该瑕疵是由设计所造成的。当然,这个瑕疵就是定义XML基本要素的Document Type Definition(DTD,文档类型定义)。DTD是“泊来品”,它们以一种更旧、更复杂的标记元语言为基础,这就是Standard Generalized Markup Language(标准通用标记语言),也叫做SGML。 大家不禁会问,有些人为什么会把这个明显无害的SGML DTD形容为“美丽玫瑰花心中的瑕疵”呢?也许是因为SGML使用了它自身的不同(而又复杂)的语法及结构来定义标记和文档结构,也许是因为SGML的学习和掌握都比较困难,也许只是因为XML能够定义它自身,并具有捕获和表示任何数据及元数据的通用能力。 对于XML的痴迷者来说,XML Schema(XML模式)完全弥补了以其他方式存在于XML核心内的这一SGML瑕疵,这是因为XML Schema允许开发人员使用XML结构、语法、名称空间以及他们能在XML环境中发现的其他所有附件来定义XML文档,而不仅仅表达特定的文档实例。 当然,不是人人都认为SGML DTD是有害的,也不是人人都认为XML Schema应该完全取代SGML DTD。这些文档定义技术每个都有其优缺点,每个都明确地适合于某些应用,而且SGML也已存在了近20年的时间,但XML Schema作为一个标准,仅有1年不到的时间,就其当前的发展来说,仅有3年不到的时间。因此,在经验和知识方面,SGML DTD要比XML Schema丰富得多——至少在年代方面更悠久。在这两项技术的起源和使XML Schema成为一个如此有力而能干的工具的细节方面,人们仍未弄清楚XML文档、数据结构、应用程序以及信息交换的来龙去脉。本书打算对它们的来龙去脉进行一番探讨,并以内容创作者和软件开发人员充分利用这两项技术为出发点,对主要的XML元数据代用品做一番比较。 XML Schema 在创建XML文档时,创作者必须先对他们所能利用的工具和必须使用的原材料有所了解。因此,在探讨SGML DTD和XML Schema的过程中,分析元数据(描述其他信息的结构与内容的信息)就成为了一个中心主题。由于本书的重点是后者(即XML Schema),而不是前者(SGML DTD),因此本书的主要篇幅都用来探讨XML Schema。 在最近的4年时间里,笔者一直从事XML文档及应用的开发,而且在这4年的时间里,我们不仅对SGML元数据的局限性有了较多的认识,而且也充分了解到,为了扩充SGML文档对品质控制、约束与边界检查进行有效性验证的能力,人们经常需要开发辅助软件。我们已经开发了许多自定义的lint实用工具来帮助我们的XML开发工作。(在Unix领域内,lint是一个由来已久的工具名称,该工具做各种程序设计语言的语法与结构检查。本书借用这个术语,是因为测试和调试XML元数据和XML文档的工作与语法和结构检查的工作有许多相似之处。) 在探讨XML Schema时,我们的最大愿望是,XML Schema的更丰富的数据类型和更强有力的数据声明与约束机制会让XML文档的设计工作变得更轻松,并会给品质控制提供自动化程度更高的支持。尽管它在这些方面还不是十分完美,但我们发现,对于数据密集型的XML应用来说,XML Schema有大量可与SGML DTD相媲美的建议,也就是说,我们也实现了能够用XML Schema或SGML DTD的同等功能来描述的大量应用(主要指具有简单结构的文字性文档)。 对我们来说,撰写本书的最大好处是加深了对XML Schema的了解,也使我们有机会总结了过去所获得的经验。因此,在阅读本书内容的过程中,我们建议读者试验、实现和利用其中所介绍的东西,因为这是最佳、最实用的学习方法。这种学习方法非常适合于我们,我们相信这种方法也会同样适合于读者。 学习方法 因此,在学习XML Schema的结构与数据类型时,读者应该努力运用自己正在学习的知识。例如,建立一个简单的通讯簿应用来感知一下如何混合运用文本与数值数据类型。在学习数值及存在性约束时,为了避免出现电话号码没有姓名相配的情况(而且也会无休止地折磨人),可以对“星期五夜问题”置之不理。 同样,我们也建议读者试一试已为“正式标准”和非正式使用而定义的各种XML Schema实现。试验这些XML Schema的设计和实现可以让读者?媲械靥逖橐幌履承┣魇疲裨蚨琳呖赡苄枰闷渌绞讲拍芴逖榈饺绾味允荨⑽牡导坝τ檬凳└浞值目刂啤J匝橐不岚镏琳叨员匦氩痘瘛⒆橹约案没С氏值氖萦肽谌萦猩钋械奶逖椤? 学习工具 虽然本书中提及了许多能用来设计和开发XML Schema文档的工具,但我们建议读者首先从学习纯文本编辑器开始,然后循序渐进地学习其他工具,才能起到事半功倍的效果。 一旦熟悉了XML Schema所提供的基本结构、数据建模工具和数据类型,我们相信读者立即就会明白XML Schema为什么不仅仅是实现XML文档设计的一种一致方法。它是一种强有力、实用而又相当可用的技术。但是,如果首先从学习一个可视化或列表驱动的并且能把读者从XML Schema的细节掌握中“解放”出来的工具开始,读者或许无需对XML Schema的细节做深入了解,也能知道文档元素所关联的信息何时应该被捕获为元素内容,以及它何时应该被捕获为一个与某个元素相关联的属性值。 只有在已试验和熟悉了XML Schema词汇及其神秘的结构和内容建模方法之后,一个好的设计工具才会真正地为我所用。此前,读者很可能会被能在具体设计中使用的绝大多数选项和选择所淹没,进而可能会被自己可选用的那些选项和选择所淹没。 如果知道了如何最充分地使用XML Schema的能力,设计人员就能创造出内容与数据的奇迹吗?并非如此,从基本了解这项技术的全部功能,到如何完成这种了解,再到使用这项技术来实现自己未实现的愿望,还有很长的一段路要走。 本书内容 本书首先简要介绍使元数据变得对现代技术如此重要的第一批原理、术语与概念以及父技术,接着介绍用来描述XML文档的两种主要机制(即SGML DTD和XML Schema)的优缺点。最重要的是,本书将探讨控制XML Schema的结构、使用以及实现的各种规则和细节,以便设计出多种XML文档和内容。 在XML占主导地位和即将占主导地位的领域内,了解如何使用XML变得越来越重要。就设计和使用基于XML的内容与数据来说,XML Schema提供了实现这类设计和最大化这类使用的关键要素。本书将介绍并阐明这类设计与使用。 献给Nana,我爱你! ——Chelsea Valentine 献给Wali,谢谢你料理家务,我才能专心写作;献给Dru,谢谢你时常提醒我去工作;献给妈妈Doris Dykes,感谢你培养我热爱读书和书;最后献给Yvonne Adams,感谢你是可能实际阅读本书的一位朋友。 ——Lucinda Dykes 献给LANWrights的朋友们:谢谢你们让这段时光成为我一生中最快乐的10年。献给妈妈和爸爸,感谢你们养育我长大成人,让我取得了今天的成就。献给Blackie,感谢你领着我步入正途,并帮助我保持清醒的头脑! ——Ed Tittel 致 谢 同往常一样,感谢Mary对本项目的无尽支持和奉献。还要感谢我的合作者Ed Tittel与Lucinda Dykes在本项目上所做出的努力。还要感谢Sybex出版公司的朋友们,谢谢Tom Cirtin、Jennifer Campbell、Judy Flynn、Piroz Mohseni以及Nila Nichols。谢谢帮助过我的所有人。 ——Chelsea Valentine 感谢Mary Burmeister使一个队伍合作完成一本书成为了可能。Mary掌控所有的头绪,并让事情不断向前推进。感谢Mary充满鼓励的谈话与笑声以及杰出的编辑与建议。感谢Ed Tittel的不断支持与鼓励以及给我提供参与本项目的机会。感谢Ed Tittel和Chelsea Valentine对XML Schema图书的真知灼见,还要感谢Chelsea的全力帮助与支持,才使本书得以出版。 感谢LANWrights和Sybex公司中帮助使本项目从幻想变成现实的所有人。 ——Lucinda Dykes 感谢Sybex公司使本书得以出版,特别是Jordan Gold、Richard Mills以及Tom Cirtin。感谢两位合作者Chelsea Valentine和Lucinda Dykes和我分担了这样一项重要的工作。特别感谢Mary Burmeister把本书组织得如此之好。你们都是最棒的。 ——Ed Tittel
|
商品评论(0条)