XML的语法、结构以及相关的一些技术(4)

时间:2007-10-23 07:27:00 


■Namespaces

考虑一下,当我们建立XML应用的时候,会为具体的行业应用创建特定的DTD,规定可用的元素。有时会出现下面情况——两个同名的元素在不同的地方可能会有不同的含义。例如,我们定义〈title〉这个标记,在书店应用中,这个标记中的字符含义是书的名称,而在人事部门中,这个标记中的字符含义却是人的称谓、头衔。如果我们写一个包含书名、作者、作者身份等信息的XML文件,将在书名和作者身份两个地方用到同样的〈title〉标记,但它们有不同的含义,计算机程序无法分辨哪一个是书名,哪一个是作者身份。这样就给我们的自动化处理带来了问题,这就是Namespaces要解决的问题。

Namespaces的概念非常直接——对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在XML文件中使用DTD中定义的元素,需将DTD的标志和元素名、属性连在一起使用,相当于指明了元素来自什么地方,这就不会和其他同名元素混淆(像我们的电话号码,两个城市可能存在相同的号码,但是我们在前面用区号将它限定了,一个地方的区号在一个国家中是独一无二的)。在XML中,采用现成的、在全球范围唯一的“域名”作为Namespaces,即用URL作为XML的Namespaces。前面我们学习XSL的时候,实际上就接触到了Namespaces,XSL文件中的标记名称前面都有一个“xsl:”,实际上这就是XSL中元素的Namespaces。声明语句就是:〈xsl:stylesheet xmlns:xsl="http://www.w3.org.TR.WD-xsl"〉,后面的xmlns:xsl="......"。其中,声明中的xsl称为前置字符串,在文件中引用元素时要加上前置字符串,如:〈xsl:templed〉。

例:

〈?xml version="1.0" encoding="GB2312"?〉
〈c:客户名单 xmlns:c="http://www.aaa.com/custom.dtd"〉
xmlns:职工="http://www.aaa.com/employee.dtd〉
〈c:客户〉
〈c:姓名〉张三〈/c:姓名〉
〈c:电话〉028-6666666〈/电话〉
〈c:接待人〉
〈职工:姓名〉李四〈/职工:姓名〉
〈职工:电话〉5555555〈/职工:电话〉
〈/c:接待人〉
〈/c:客户〉
....... 


这个例子在前面定义了两个Namespaces——c:和职工:。在应用元素时,前面都加了特定的Namespaces。那么应用程序在读到同名元素,如:〈姓名〉、〈电话〉时,就能够区分哪一个是客户姓名、电话,而哪一个又是本单位职工的姓名、电话了。

利用Namespaces,我们还可以在XML文件中直接利用HTML的标记,不使用Xlink或Xpionter,也让XML文件具有超级链接、显示图片的功能。在使用HTML标记之前,必须声明它的Namespaces。下面这个例子就是XML和HTML的混合使用。
例:


〈?xml version="1.0" encoding="GB2312" ?〉
〈?xml-stylesheet href="first.css" type="text/css" ?〉
〈data xmlns:HTML="http://www.w3.org/TR/XHTM1"〉
〈book〉
〈title〉XML入门精解〈/title〉
〈HTML:a href="mailto:lionliao@yeah.net"〉
〈author〉作者:张三〈/author〉
〈/HTML:a〉
〈picture〉
〈HTML:img src="zhangsan.jpg" width="80" height="80"〉〈/HTML:img〉
〈/picture〉
〈price unit="人民币"〉价格:$20.00〈/price〉
〈content〉
〈HTML:a href="http://www.cbi.com"〉点击查看主要内容〈/HTML:a〉
〈/content〉
〈/book〉
〈/data〉 

注意:在XML中使用HTML时要严格遵守XML的语法规定,元素必须正确关闭。


通过CSS或XSL可将这个XML文件显示出来,如图1所示。

标签:xml,Xpointer,dom,xlink
0
投稿

猜你喜欢

  • asp开发Wap中的随笔

    2008-05-21 12:56:00
  • position:relative/absolute无法冲破的等级

    2007-05-11 17:03:00
  • MySQL数据库的23个特别注意事项

    2010-08-08 14:43:00
  • 关于 Web 字体:现状与未来[译]

    2009-11-24 13:50:00
  • jQuery 1.4 Released 新特性官方诠释

    2010-04-01 12:23:00
  • ASP 验证码的程序及原理

    2010-04-24 15:56:00
  • 全屏flash的尺寸分析

    2009-02-11 13:22:00
  • JS载入数据效果!loading

    2009-01-20 18:35:00
  • 禁止背景图在网页中平铺

    2011-04-29 14:10:00
  • 在ASP中使用SQL语句之6:存储过程查询

    2007-08-11 12:44:00
  • asp如何验证IP地址?

    2010-06-10 18:37:00
  • 文字适度阅读的宽度或者字数

    2007-10-26 07:31:00
  • SQL Server如何保证可空字段中非空值唯一

    2011-02-24 16:44:00
  • button标签的type属性默认值是?

    2010-08-16 12:33:00
  • 如何使用Script Encoder?

    2010-06-05 12:42:00
  • ASP:判断访问是否来自搜索引擎的函数

    2008-03-12 11:39:00
  • ASP读取MySQL数据库出现乱码的解决办法

    2010-03-08 14:25:00
  • Mysql数据库备份和还原常用的命令

    2011-12-01 10:41:54
  • 脆弱的用户体验

    2010-01-28 12:34:00
  • CSS用relative和absolute实现的图片定位效果

    2008-10-06 21:37:00
  • asp之家 网络编程 m.aspxhome.com