|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
XML的未来 考虑一个数据交换对其很重要的产业,如银行。银行使用所有 在某种情况下,假如PC上的IE 4遇到一个<SOFTPKG> 标记符,一 这里我们有三个XML应用程序,看起来与Andy Grove在70年代看 这些好事是什么呢?我不知道。但是我也不知道我的PC上的下 你开始考虑它会扩展到什么程度了吗? 我们有很多XML的实际应用可以谈论,我会在不久的将来谈到它 顺便提一句,这个菜谱确实是我妈妈_的,而且很杰出。假如你
<!ATTLIST fn %attr.lang; value CDATA #FIXED "TEXT"> <!ENTITY % attr.img " img.type CDATA #REQUIRED img.data ENTITY #REQUIRED">
那么让我们谈谈这件事,先有一点耐心。 上面这些行可能不好看,但实际上没什么。它们被用在DTD中来定义XML文档中的属性和实体。了解HTML的人会对这很清晰。属性是带有HTML标记符的条目,用来更正确地描述标记符。在常常出现的<img src="my.gif" height="20" width="20">中,有两个属性:height和width。你在后面会看到,在XML文档使用属性与之很相似。 对实体也没有什么新东西。假如你用过&,你就已经把握了最基本的东西。一个被&和分号包围起来的字符串用来表示另一个或一套字符。(这里有ISO实体的完整清单。) 当然,XML中属性和实体还有其它功能。这就不可避免地要引入语法,虽然不太多。一旦知道了这些,就会不费劲地使用XML文档。 简化菜谱 假如你读过我写的XML简介,你会记得用简朴的标记符表示的菜谱中的组成成分,如<item>2 cups flour</item>。在写完那篇文章后,我在网上漫游,发现关于菜谱的另一个XML文档。其中的菜谱元素如下所示:
这种方式有一个实际的好处:可以更轻易控制数据。用第一种方式,<item>标记符用来容纳一堆不同的信息。假如我想提取组成成分的清单而不需要各成分的量,我就不会那么做。 我可以用如下的结构取得相似的功能:
<quantity>2</quantity> <units>cups</units>
首先要注重的是属性名,quantity和units只有被能够翻译它们的应用程序处理时才有意义。 在被包含在有效的文档中之前,应告诉DTD来答应它。对于上面的ingredient元素,我们在DTD中只包含了以下代码:
<!ELEMENT ingredient #PCDATA> <!ATTLIST ingredient quantity CDATA #REQUIRED> <!ATTLIST ingredient units CDATA #REQUIRED>
这是属性依附的元素。 <!ATTLIST ingredient quantity CDATA #REQUIRED> 这里定义属性名。 <!ATTLIST ingredient quantity CDATA #REQUIRED> 这里设置属性类型。CDATA代表字符数据。意味着处理器在属性内可以得到文本。 <!ATTLIST ingredient quantity CDATA #REQUIRED> 最后的部分定义属性的缺省值。可以使用实际的数值,如3。这样,XML中空白长度的属性值将为3。输入的值将覆盖缺省值。 在上面的例子中我没有设置特定的数量,而是使用XML的要害字#REQUIRED。它告诉处理器次属性必须包含一个值。假如空白,文档将不被处理。 缺省值有另外两个要害字。第一个是#FIXED - 假如属性值在整个文档中保持一样的值。假设我定义一个image的标记符属性,所有图像的大小都一样,比如说100*50像素,就可以在DTD中这样定义属性:
<!ATTLIST picture width CDATA #FIXED "50 px">
另一个要害字是#IMPLIED,表示属性可以包含值或是空的。 下面让我们看看属性类型。 假如你决定自己写DTD,可能需要一本解释ATTLIST语句中所有组合的XML的书。但是假如借用DTD,或许只知道CDATA和另外三种属性就性了。 第一个是ID。它要求属性的值在文档中不重复。使用过数据库的人都知道唯一标志符的必要性。DTD ATTLIST语句看起来象这样: <!ATTLIST element_name attribute_name ID #REQUIRED> 很难想象没有#REQUIRED缺省值的ID属性类型。假如那样,任何重复的或空的ID都会迫使处理器返回一个错误。ID必须以字母或下划线开始并且不能包含任何空格。 NMTOKEN类型也使用上面的命名规则。但是答应重复。它被用做传递数据给应用程序的保障。大多数程序语言,包括Java和JavaScript,在模块名中不能有空格。大多数情况下,最好保证属性符合它们的规则。 最后是枚举类型,不需要特定的要害字。而是用"|"符号包含在括号内的值,例如: <!ATTLIST sibling (brother | sister) #REQUIRED> 假如有有限的可能的属性值,可以用这种方法。 不会认为今天的课程无趣吧,那么就接着读吧! 返回类别: 教程 上一教程: 利用ASP从远程服务器上接收XML数据 下一教程: XML+CSS的范例 您可以阅读与"XML简易教程之三"相关的教程: · XML简易教程之一 · WML初级教程之关于WML文档结构详解 · WML初级教程之从实际应用中了解WML · XML教程?编写结构完整的XML文档 · WML初级教程之关于WML文件的概念 |
| 快精灵印艺坊 版权所有 |
首页 |
||