xmlfile.load("2.xml");

var xslfile=new ActiveXObject("Microsoft.xmldom");

xslfile.load("first">

XML与其相关技术(2)

80酷酷网    80kuku.com

  xml

 

var xmlfile=new ActiveXObject("Microsoft.xmldom");

xmlfile.load("2.xml");

var xslfile=new ActiveXObject("Microsoft.xmldom");

xslfile.load("first.xsl");

document.all.item("DOM
应用").innerHTML=xmlfile.transformNode(xslfile.documentElement);

/SCRIPT

/head

body

DIV id="DOM应用"〉〈/DIV

/body

/heml  


■Namespaces

考虑一下,当我们建立XML应用的时候,会为具体的行业应用创建特定的DTD,规定可用的元素。有时会出现下面情况——两个同名的元素在不同的地方可能会有不同的含义。例如,我们定义〈title〉这个标记,在书店应用中,这个标记中的字符含义是书的名称,而在人事部门中,这个标记中的字符含义却是人的称谓、头衔。如果我们写一个包含书名、作者、作者身份等信息的XML文件,将在书名和作者身份两个地方用到同样的〈title〉标记,但它们有不同的含义,计算机程序无法分辨哪一个是书名,哪一个是作者身份。这样就给我们的自动化处理带来了问题,这就是Namespaces要解决的问题。Namespaces的概念非常直接——对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在XML文件中使用DTD中定义的元素,需将DTD的标志和元素名、属性连在一起使用,相当于指明了元素来自什么地方,这就不会和其他同名元素混淆(像我们的电话号码,两个城市可能存在相同的号码,但是我们在前面用区号将它限定了,一个地方的区号在一个国家中是独一无二的)。在XML中,采用现成的、在全球范围唯一的域名作为Namespaces,即用URL作为XMLNamespaces。前面我们学习XSL的时候,实际上就接触到了NamespacesXSL文件中的标记名称前面都有一个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的标记,不使用XlinkXpionter,也让XML文件具有超级链接、显示图片的功能。在使用HTML标记之前,必须声明它的Namespaces。下面这个例子就是XMLHTML的混合使用。

例:

?xml version="1.0" encoding="GB2312" ?

?xml-stylesheet href="first.css" type="text/css" ?

data xmlns:HTML="http://www.w3.org/TR/XHTM1"

book

titleXML入门精解〈/title

HTML:a href="mailto:lionliaoyeah.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的语法规定,元素必须正确关闭。

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

■XHTML

XHTML
最早叫HTML in XML,就是把过去用SGML定义的HTML,用XML来重新定义(不要忘了,XML是一种定义语言的语言)。实际上,XHTML中的标记基本上还是HTML 4.0中的那些标记,各种标记、属性的用法基本不变。只不过因为它是通过XML定义的,所以必须严格遵守XML的规定,不像过去那样随便。那为什么要发展XHTML呢?

现在,手机上网、信息家电等炒得如火如荼,好像什么都应该连到因特网上。XHTML正是适应这种潮流而出现的。大家知道,现在的HTML越来越复杂,而且存在大量的不规范HTML网页(并不是能够在IENetscape正确显示就算是规范的网页),而浏览器为了能够适应这种情况,包容了大量五花八门的HTML网页,已经变得非常臃肿(这就是虽然你的HTML语法错误,有时还是能够正确显示出来的原因,设计浏览器的工程师绞尽脑汁来适应、包容错误)。对于PC来说,这不算什么,因为PC的性能已经得到了很大程度的提升,而对于那些掌中设备、信息家电,可没有这么多存储空间可用。XML标准简单但是非常严格,主要目的就是减轻解析器、浏览器的开发负担以及这些软件的体积。一般的XML解析器的体积不过几百KB。根据XML标准定义出来的XHTML当然继承了XML的特性,同时也保留了HTML在表现形式上的优越性,它摒弃了HTML中的不干净代码,提供了良好的可伸缩性,可大可小。

XHTML
通过将过去的HTML功能,按照使用者的需要和浏览器的能力,划分为多个模块,每一组模块仅支持部分HTML标记。针对于特定模块开发的解析器、浏览器显然比大而全的解析器、浏览器体积要小得多。这就达到了可小的目的。比如说:掌上电脑屏幕本身很小,显然它浏览网页的时候不需要使用HTML中的“Frame”功能,那么针对这种设备,有它专门的一套适用的、不包含“Frame”的标记。当然,每个模块都需要有它们的专用DTD来声明可以使用哪些标记。现在W3C已经定义好了几种专用的DTD

可大呢?实际上就是利用XML的特点,XML是什么?可扩展标记语言呀!以前,HTML中的标记是已经定义好了的,是不能够改变,只能拿来使用,而XHTML就可以像XML一样,能够自定义标记。

使用XHTML和使用HTML基本上一样,不过要注意的是,我们再不能偷懒了。XHTML也像XML一样,首先必须是Well-Formed。规则如下:

1.
标记必许正确结束。

2.
标记与标记之间不允许交叉嵌套。像以前的i〉斜体〈b〉粗斜体〈/i〉〈/b这样的语句是不行的,而必须写成i〉斜体〈b〉粗斜体〈/b〉〈/i才合格。

3.
空元素(开始标记与结束标记间无内容)必须按XML的规定写成〈元素名/〉。

4.
属性值必须用“ ”号括起来,像以前的td width=100的语句必须改写成td width="100"

5.
属性都要赋值。以前有些标记的属性如果不赋值,它就取缺省值,在XHTML中,必须明确地给它赋值。

6.
标记名称、属性名称都用小写字母。

7.
使用正确的根元素加上Namespaces

8.
head〉〈body〉不能够省略。〈title〉必须是〈head〉中出现的第一个子元素。

9.
原来HTML网页中的VBScriptJavaScript、样式表区域,必须像XMLCDATA区一样包装起来,如:

script language="JavaScript"

![CDATA[

......

if (i
3 &&&& ......

]]


/script  


满足了上述条件,并不表示XHTML就是最好的,而仅仅是格式正确的XHTML文件,需要正确地引用DTD,才成为真正正确的XHTMLW3C已经定义了三种XHTMLDTD供大家使用,它们分别是StrictTransitionalFrameset。从现在开始,写HTML网页时就需要按照XHTML的规定来写,并且最好不要用font之类的标记,尽量使用CSS来表现你的HTML网页。等到XHTMLXML普及了,你就会暗笑了,因为你实现网页转换是非常容易的。

本系列讲座介绍了XML的语法、结构以及相关的一些技术。并非了解这些,就能够使用XML了。有关XML的具体开发应用现在的讨论也是非常多,如:XML用于电子商务、XML用于文档管理、XML用于数据驱动应用程序等。我们学习XML,关键就是要在以后的开发中应用它,明白了XML的基础知识,将会在应用开发中起到重要作用。



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: