• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

让我们来改进一下:
程序清单2 - 1 5
现在,已经明确地把作者们分开了,所以让我们看一看目录元数据是如何显示的。例如,
我们可能争论书名、I S B N等内容都是< b o o k >元素的属性,而不是内容的一部分。
出于说明的需要,我们把这些元素改变成了属性(虽然最好的办法与此效果相当),并且把某
些其他的< B o o k >子元素改为属性。我们还增加了一个< P r i c e >元素以便更深入地说明属性的使用:
程序清单2 - 1 6
48使用XML 高级编程
下载
很明显,在这个例子中有许多遗漏的地方。一个一直存在的不足就是p u b l i s h e r属性和
< A u t h o r >元素的字符串常量的使用。我们将在下一章解决它和其他问题,此时书籍目录的概念
已经得到很大的扩充。
前面的例子解释了元素和属性的处理原则:元素是代表对象的名词,而属性是描述这些对
象的特点的形容词。
你可能注意到我们使用了一种代码风格的约定来分隔这两个对象:元素类型名使用适当的
名词形式(第一个字母大写);属性名都是小写。这有助于增强正在命名的内容,特别是当我
们在注释或其他文本中讨论这些命名时尤其如此。
元素和属性的配合使用并不是件简单事情。在X M L - L和X M L - D E V新闻组中就这个主题曾经
出现过许多讨论和争论。某些人认为根本就不应该使用属性—因为它们增加了不必要的处理
复杂性,任何用属性代表的东西都可以更好地包含在子元素中。其他人则非常欣赏使用D T D验
证属性值和设置缺省值所带来的好处。最近的试验表明,抛开表面现象,使用普通的数据压缩
(例如g z i p、L Z W或者z l i b)都不具备数据存储和传输方面天生的优势(也就是说,压缩过的
X M L数据对象的大小没有什么变化)。
XML 1.0推荐规范的两位编辑者和其他S G M L / X M L专家曾经就这个主题撰写过文章—通
过以下链接大家可以看到这些内容(大多数都深藏在Robin Cover的SGML/XML We b页下)。
• Andrew Layman的“XML Syntax Recommendation for Serializing Graphs of Data”—
h t t p : / / w w w. w 3 . o rg / Ta n d S / Q L / Q L 9 8 / p p / M i c r o s o f t - s e r i a l i z i n g . h t m l
• Eliot Kimber的“Elements or attributes?”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / a t t r K i m b e r 9 7 11 . h t m l
• Michael Sperberg - M c Q u e e n的“Element vs. Attributes”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / a t t r S p e r b e rg 9 2 . h t m l
• Robin Cover的“SGML/XML: Using Elements and Attributes”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / e l e m e n t s A n d A t t r s . h t m l
• Tim Bray的“When is an attribute an attribute?”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / b r a y A t t r 9 8 0 4 0 9 . h t m l
• G. Ken Holman的“When to use attributes as opposed to elements”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / h o l m a n E l e m e n t s A t t r s . h t m l
2.15 小结
在本章中,我们向大家演示了所有X M L数据必需的基本语法。我们在没有其他任何知识或
第2章XML 语法使用49
下载
工具的情况下就能够创建简单的、格式正规的文档,但这还没有开始充分利用X M L的强大功能。
例如,在基本语法中并没有提供H T M L中“H T”—超文本。在本书后面的部分(第8章)
中讨论的一些待定的X M L扩展中,改进的链接语法是非常重要的一个方面。
格式正规的文档对于一些应用程序来说已经足够,但这意味着任何数据的解释或验证都必
须硬编码在应用程序中。一种更方便的办法就是提供第二个文档用来验证第一个。这个验证文
档的形式可能是D T D(参见第3章)也可能是模式(参见第7章)。
在简单的情况下, X M L是一种强大的数据交换介质。在使用D T D或模式、命名空间、链接
和样式单扩充后, X M L将是更为强大的I n t e r n e t时代的基础。再配合以J a v a或其他合适的语言,
X M L将使得计算程序能够更为方便、使用范围更广。
50使用XML 高级编程
下载
下载
第3章文档类型定义
上一章介绍了如何编写格式正规的X M L文档。然而,当你开发符合XML 1.0的文档结构时,
出现了这样一个有趣的问题:你如何与其他人交流你设计的结构?主流的浏览器已经支持或者
正在准备支持X M L,但是这仅限于显示X M L的内容。如果你开发的程序不仅用到X M L,而且创
建了新的X M L词汇表,即:将你的设计意图隐藏在代码中。那么,为了使XML 1.0的其他用户
能够理解符合你创建的词汇表的文档的结构,作为X M L词汇表的设计者,你必须通过某种通用
的方式说明词汇表的语法规则。为此, XML 1.0提供了一种机制—文档类型定义( D o c u m e n t
Type Definition,D T D),并将其作为规范的一部分。D T D使用正式的语法定义X M L文档的结构
和允许值。你在上一章看到的X M L是格式正规的X M L。它符合X M L的基本语法规则,并且没有
其他任何语法约定。在本章,我们将创建有效的X M L:它不仅遵循X M L的语法规则,而且受到
你所创建的词汇表规则的约束。
D T D将带来以下优越性。首先,通过创建D T D,能够正式而精确地定义词汇表。所有词汇
表规则都包含在D T D中。凡是未在D T D中出现的规则都不属于词汇表的一部分。许多解析器可
以利用D T D验证文档实例的有效性。只要在文档实例中写入一条简单的声明语句,解析器就能
够获取D T D,并将其中的内容与文档实例进行比较。另外, X M L创作工具也可以通过类似的方
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(21)