胡思乱想之XML(一)

最近我开始自学XML,顺便在此记点胡乱想到的东西。欢迎一样初学XML的朋友一同来探讨,当然肯定也非常希望高手能不吝指正。

(注:书摘或网摘内容部分统一使用斜体表示,红色字体表示强调)

1、对XML的初步感觉

通常用可用资源来表示XML标记的概念。这里,“可用”指的是某“资源”语义明确,比如光秃秃的"9021103"这个数字,对我们来讲都是没有什么意义的,它可以代表电话号码或QQ号等的任何东西,什么都可能是,所以它什么都不是,不能称得上是"资源"--它现在不可用!而利用XML标记则完全可以给它一个身份,很显然如"<QQ>9021103</QQ>",再如在一个普通人肩膀上两侧加上个两杠四星的标签,意义就很不简单了。它使信息以有意义的结构进行编码,计算机和人在一定程度上都可以理解这种编码,其中的理解表示能够识别,表示差别具有完备性,(计算机和人都一样,作为完备的物理符号系统其基本功能就是“符号比较”。)XML是自由格式的,所以可以用在各种进程中,可替代和补充各种技术和脚本,还能与数据库一同使用。但如何通过这些XML资源获取可用信息,如何通过XML传递有用信息?--这是接下来一系列我想要学习和谈论的主要内容。

2、XML的产生

学习任何东西其实就是在学它的历史!XML并没有"上下五千年",也不是"百年陈酿",所以学习起来应该没有历史包袱。技术因需要应用而产生,技术也因应用需要而改变。XML的设计产生完全是因为SGML太笨重烦琐、HTML太简陋(仅面向格式而无语义,部分缺陷在于可扩展性和可重用性)。顺着想一点,上面的三个语言都是独立于硬件和软件的,当然此处的独立不是指应用上的,要真离开了硬软件,那么"皮之不存,毛将焉附"?所以这里的独立是指他们对硬软件不挑剔,当然在真正设计软件的时候实际上就已经将这些语言考虑进去了,或者说以前是更多的是根据机器设计语言,而现在是根据语言来设计(虚拟)机器。

3、了解一些XML的基础知识

标记的基本单元是元素。元素可以包含文本、图片路径、表数据,甚至是其他元素。使用XML的主要目的就是进行数据信息建模,定义一个信息层次结构,该层次结构描述元素的使用和组织方式。内容包含在层次结构中,并由所使用的元素进行一定的控制。又元素之间的嵌套所产生的关联对数据进行检索和排序是很有用的。

以葡萄酒酿造厂为例使用标记:

<wine id="Muscadine_750ml">

<name>Muscadine</name>

<varietal>Scupp</varietal>

<vintage>1998</vintage>

<winery>Melvin</winery> //该标记可以与目录出版商共享

<bottlesize>750ml</bottlesize> //便于排序或库存管理

<description>Our complex pruple Muscadine grape lends an assertive arome and;

flavor,with a emi-sweet velvety smooth finisi.</description> //描述信息可以直接在销售点使用,或显示在浏览器上。还能与一些关键词一起使用以便更好地帮助搜索程序找到最佳葡萄酒。

</wine> //退出文档

上面的XML标记信息对于标记应用来说是直观的,但实际上XML的价值表现在信息模型搭建的基础上,如上面哪个葡萄酒厂的会计数据与目录数据是截然不同的,因为它们所关注的侧重点是不同的,数据本身对元素的命名和层次结构的组织提供了指导

为内容选择最合适的信息模型时,需要考虑拥有哪些信息、如何使用这些信息、数据集内需要增加哪些额外信息。然后根据需要创建元素标记和XML文档。

当然我们在实际建立一个结构的时候要避免力求完美,因为不可能做到全对也不可能做到全错,只要它符合逻辑、满足需要就可以了,在实际过程中还可以实时调整,不仅在开始之前还要在开始后的每个阶段分析情况,确保数据的完整性。

我认为科学追求的不是真理,是好理!好用够用就是了,不能满足需求时就自然会有新的更好的理论出来替换。

(a) XML的声明:<?xml version="1.0"?>旨在告诉处理程序、工具和用户:嘿,我是熊猫,只吃竹子,别拿别的喂我!

如果使用声明就必须置于XML文件的开头,即根元素的起始标记之前。如果生成的XML实例是可重用的小型数据块,就可能不用进行声明,否则可能使声明出现在文件开头以外的地方而使抛出异常,除非有自动化进程来验证识别。

(b)属性与信息建模:属性是除名称外包含在尖括号内的元素的附加信息,位于元素的起始标记内。

<chapter author="William Penn"  university="Duquesne">

……

</chapter>

可以按自己想要的方式设计元素和属性,根据用户的偏好创建动态内容,以便通过不同介质传递多种格式。

(c)创建XML文档

<?xml version="1.0"?>

<wine id="Muscadine_750ml"  type="dessert">

<name>Muscadine</name>

<varietal>Scupp</varietal>

<vintage>1998</vintage>

<winery>Melvin</winery> 

<bottlesize>750ml</bottlesize> 

<description>Our complex pruple<keyword> Muscadine</keyword> grape lends an <keyword> assertive</keyword> arome and flavor,with a emi-sweet velvety <keyword>smooth</keyword> finisi.</description> 

</wine> 

浏览器中预览的情况:

image 

看起来最终的显示效果跟源代码差不多,哦,以后加上CSS或XSLT(可以生成XML或将XML转换成其他类型的基于文本的文档)控制一下就可以被美化!

4、尽管如此,XML能解决什么问题呢?

(a)重用内容,多个输出,多种介质

(b)管理翻译的内容

(c)以实施的结构和自动格式化进行编写

(d)实施数据一致性

(e)共享数据

posted @ 2008-05-22 21:35 lrr_ec 阅读(164) 评论(0)  编辑 收藏

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-05-22 21:43 编辑过


相关链接: