关于作者

用户名:nsyt
笔名:nsyt
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



访问统计:
文章个数:3
评论个数:1
留言条数:7




Powered by BlogDriver 2.1

[鸟生鱼汤] 的博客

 

欢迎访问 [鸟生鱼汤] 的博客

文章

xml语法规则

一.XML语法规则

XML的文档和HTML的原代码类似,也是用标识来标识内容。创建XML文档必须遵守下列重要规则:
规则1:必须有XML声明语句
这一点我们在上一章学习时已经提到过。声明是XML文档的第一句,其格式如下:

声明的作用是告诉浏览器或者其它处理程序:这个文档是XML文档。声明语句中的version表示文档遵守的XML规范的版本;standalone表示文档是否附带DTD文件,如果有,参数为no;encoding表示文档所用的语言编码,默认是UTF-8。

规则2:是否有DTD文件
如果文档是一个"有效的XML文档"(见上一章),那么文档一定要有相应DTD文件,并且严格遵守DTD文件制定的规范。DTD文件的声明语句紧跟在XML声明语句后面,格式如下:

其中:
"!DOCTYPE"是指你要定义一个DOCTYPE;
"type-of-doc"是文档类型的名称,由你自己定义,通常于DTD文件名相同;
"SYSTEM/PUBLIC"这两个参数只用其一。SYSTEM是指文档使用的私有DTD文件的网址,而PUBLIC则指文档调用一个公用的DTD文件的网址。
"dtd-name" 就是DTD文件的网址和名称。所有DTD文件的后缀名为".dtd"。
我们还是用上面的例子,应该写成这样:

规则3:注意你的大小写
在XML文档中,大小写是有区别的。

是不同的标识。注意在写元素时,前后标识大小写要保持一样。例如:ajie,写成ajie是错误的。
你最好养成一种习惯,或者全部大写,或者全部小写,或者大写第一个字母。这样可以减少因为大小写不匹配产生的文档错误。

规则4:给属性值加引号
在HTML代码里面,性值可以加引号,也可以不加。例如:wordword都可以被浏览器正确解释。
但是在XML中则规定,所有属性值必须加引号(可以是单引号,也可以是双引号),否则将被视为错误。

规则5:所有的标识必须有相应的结束标识
在HTML中,标识可能不是成对出现的,比如
。而在XML中规定,所有标识必须成对出现,有一个开始标识,就必须有一个结束标识。否则将被视为错误。


规则6:所有的空标识也必须被关闭
空标识就是标识对之间没有内容的标识。比如
,等标识。在XML中,规定所有的标识必须有结束标识,针对这样的空标识,XML中处理的方法是在原标识最后加/,就可以了。例如:

应写为

应写为
应写为



二.元素的语法


元素由一对标识以及其中的内容组成。就象这样:ajie。元素的名称和标识的名称是一样的。标识可以用属性来进一步描述。


在XML中,没有任何保留字,所以你可以随心所欲的用任何词语来作为元素名称。但是也必须遵守下列规范:


1.名称中可以包含字母、数字以及其它字母;


2.名称不能以数字或"_" (下划线)开头;


3.名称不能以字母 xml(或 XML 或 Xml ..)开头


4.名称中不能包含空格


5.名称中间不能包含":"(冒号)


为了使元素更容易阅读理解和操作,我们还有一些建议:


1.名称中不要使用"."。因为在很多程序语言中,"."是作为对象的属性,例如:font.color。同样的原因"-"也最好不要用,必须使用的,以"_"代替;


2.名称尽量简短。


3.名称的大小写尽量采用同一标准。


4.名称可以使用非英文字符,比如用中文。但是有些软件可能不支持。(IE5目前是支持中文元素的。)


另外,补充一点关于属性的说明。在HTML中,属性可以用来定义元素的显示格式,比如:word将把word显示为红色。而在XML中,属性只是对标识的描述,与元素内容的显示无关。例如同样一句:word,并不会将word显示为红色。(那么,有网友会问:如何在XML中将文字显示为红色呢?这就需要使用CSS或者XSL,我们在下面详细讲述。)


三.注释的语法



注释是为了便于阅读和理解,在XML文档添加的附加信息,将不会被程序解释或则浏览器显示。


注释的语法如下:





可以看到,它和HTML中的注释语法是一样的,非常容易。养成良好的注释习惯将使你的文档更加便于维护,共享,看起来也更专业。


四.CDATA的语法


CDATA全称character data,翻译为字符数据。我们在写XML文档时,有时需要显示字母,数字和其它的符号本身,比如"<",而在XML中,这些字符已经有特殊的含义,我们怎么办呢?这就需要用到CDATA语法。语法格式如下:



例如:


ajie]]>


在页面上显示的内容将是"ajie"


五.Namespaces的语法

Namespaces翻译为名字空间。名字空间有什么作用呢?当我们在一个XML文档中使用他人的或者多个DTD文件,就会出现这样的矛盾:因为XML中标识都是自己创建的,在不同的DTD文件中,标识名可能相同但表示的含义不同,这就可能引起数据混乱。
比如在一个文档<table>wood table</table>中<table>表示桌子,
而在另一个文档<table>namelist</table>中<table>表示表格。如果我需要同时处理这两个文档,就会发生名字冲突。
了解决这个问题,我们引进了namespaces这个概念。namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。
Namespaces同样需要在XML文档的开头部分声明,声明的语法如下:
<document xmlns:yourname='URL'>
其中yourname是由你定义的namespaces的名称,URL就是名字空间的网址。
假设上面的"桌子<table>"文档来自http://www.zhuozi.com,我们就可以声明为
<document xmlns:zhuozi='http://www.zhuozi.com'>
然后在后面的标识中使用定义好的名字空间:
<zhuozi:table>wood table</table>
这样就将这两个<table>区分开来。注意的是:设置URL并不是说这个标识真的要到那个网址去读取,仅仅作为一种区别的标志而已。

六.entity的语法

entity翻译为"实体"。它的作用类似word中的"宏",也可以理解为DW中的摸板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity。
entity可以包含字符,文字等等,使用entity的好处在于:1.它可以减少差错,文档中多个相同的部分只需要输入一遍就可以了。2.它提高维护效率。比如你有40个文档都包含copyright的entity,如果需要修改这个copyright,不需要所有的文件都修改,只要改最初定义的entity语句就可以了。
XML定义了两种类型的entity。一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用。
entity的定义语法为:
<!DOCTYPE filename [
<!ENTITY entity-name "entity-content"
]
>
例如我要定义一段版权信息:
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved"
]
>
如果我的版权信息内容和他人共享一个XML文件,也可以使用外部调用的方法,语法象这样:
<!DOCTYPE copyright [
<!ENTITY copyright SYSTEM "http://www.sample.com/copyright.xml">
]
>
定义好的entity在文档中的引用语法为:&entity-name;
例如,上面定义的版权信息,调用时写作:&copyright;
完整的例子如下,你可以copy下来存为copyright.xml观看实例:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved">
]>
<myfile>
<title>XML</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
&copyright;
</myfile>
五.Namespaces的语法

Namespaces翻译为名字空间。名字空间有什么作用呢?当我们在一个XML文档中使用他人的或者多个DTD文件,就会出现这样的矛盾:因为XML中标识都是自己创建的,在不同的DTD文件中,标识名可能相同但表示的含义不同,这就可能引起数据混乱。
比如在一个文档<table>wood table</table>中<table>表示桌子,
而在另一个文档<table>namelist</table>中<table>表示表格。如果我需要同时处理这两个文档,就会发生名字冲突。
了解决这个问题,我们引进了namespaces这个概念。namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。
Namespaces同样需要在XML文档的开头部分声明,声明的语法如下:
<document xmlns:yourname='URL'>
其中yourname是由你定义的namespaces的名称,URL就是名字空间的网址。
假设上面的"桌子<table>"文档来自http://www.zhuozi.com,我们就可以声明为
<document xmlns:zhuozi='http://www.zhuozi.com'>
然后在后面的标识中使用定义好的名字空间:
<zhuozi:table>wood table</table>
这样就将这两个<table>区分开来。注意的是:设置URL并不是说这个标识真的要到那个网址去读取,仅仅作为一种区别的标志而已。

六.entity的语法

entity翻译为"实体"。它的作用类似word中的"宏",也可以理解为DW中的摸板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity。
entity可以包含字符,文字等等,使用entity的好处在于:1.它可以减少差错,文档中多个相同的部分只需要输入一遍就可以了。2.它提高维护效率。比如你有40个文档都包含copyright的entity,如果需要修改这个copyright,不需要所有的文件都修改,只要改最初定义的entity语句就可以了。
XML定义了两种类型的entity。一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用。
entity的定义语法为:
<!DOCTYPE filename [
<!ENTITY entity-name "entity-content"
]
>
例如我要定义一段版权信息:
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved"
]
>
如果我的版权信息内容和他人共享一个XML文件,也可以使用外部调用的方法,语法象这样:
<!DOCTYPE copyright [
<!ENTITY copyright SYSTEM "http://www.sample.com/copyright.xml">
]
>
定义好的entity在文档中的引用语法为:&entity-name;
例如,上面定义的版权信息,调用时写作:&copyright;
完整的例子如下,你可以copy下来存为copyright.xml观看实例:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved">
]>
<myfile>
<title>XML</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
&copyright;
</myfile>

- 作者: nsyt 2005年07月19日, 星期二 16:12  回复(1) |  引用(1) 加入博采

工业标准的矢量图像格式----SVG

什么是SVG

SVG,是可任意放缩矢量图像格式(Scalable Vector Graphics)的简称。它基于XML(可扩展标识语言),是一个全新的标准开放的矢量图像和动画格式。SVG不同于传统的二元(平面)图像和动画制作,它使用简单的一元(文本)语句,完成矢量图像,以及诸如色彩变化,对象运动,滤镜和遮照,音效添加等各式动画效果。SVG创造一个利用纯文本完成网络多媒体的神话。

SVG的特点

    矢量图像

  图像通常分为矢量图像和位图图像。
  矢量图像利用点和线等矢量化的数据描述图像,并在图形中包含色彩和位置信息。矢量图像的最大优点是"分辨率独立"。当显示或输出图像时,图像的品质不受设备的分辨率影响,能够提供高清晰的画面。矢量图相对位图而言,更适合用于直接打印、印刷或输出到一些小型设备如手提装置上。 放大和缩小矢量图不会影响图像品质。
而位图图像则使用我们称为像素的一格一格的小点来描述图像。计算机的屏幕其实就是一张包含大量像素点的网格。位图图像受到分辨率的影响。因此常常出现图像边缘锯齿和放大后"马赛克"现象。相对而言,位图需要的存储空间要比矢量图更多。
  SVG作为矢量图像格式,同样具备了矢量图的诸多优点,更适合在网络中传输和应用。SVG除了矢量图的优势,也同样保持了对位图图像的正确表达功能。使用XML中的XLINK(扩展链接)标签,SVG也可以在图像中调用位图图像。

  矢量滤镜

  虽然SVG图像做为矢量图格式,具有很多优点。但我们也看到,仍然有很多的图像设计师倾向于使用位图创作。这是因为位图常常可以使用大量的滤镜效果、纹理贴图和空间幻影等,加强图像的视觉效果。
但因为位图的创作是直接针对像素操作,所以,一旦完成效果的添加,设计师几乎无法再进行修改。例如,输出一幅雾化效果的位图图像,您已经无法再恢复原来清晰的图像。
  而如果使用SVG支持的矢量滤镜,设计师同样可以创作出大量流行的和普遍的滤镜效果。并且,这样的滤镜效果是可调整的。因为SVG的矢量滤镜并不直接针对像素进行操作,而是作为某一个对象的独立属性保存在文件中。修改图像效果只需要重新调整这些属性,就可以完成对滤镜的修改、替换和删除,非常的便捷。SVG的矢量滤镜对于远程协作和二次编辑,提供了极大的自由度。
  关于滤镜的实例,请参看<<SVG中文教程>>。

  基于XML

  SVG的语法和结构基于XML(可扩展标识语言)。XML是下一代的网络开发语言,它提供的功能远远超过了目前使用的HTML(超文本链接语言)。当一个网站变得越来越复杂的同时,为了获得更好的管理和交互,网站开发者同样需要一个比HTML更优秀的网络开发语言和工具。这就是XML。
  与HTML不同,XML完全分离了网站内容和网站构架。通过定义结构数据类型,用户端应用程序能够显示和处理,而不仅仅像HTML那样仅仅能显示,网页或数据。例如,一个利用XML标签定义的电话号码,可以根据需要,由浏览器进行拨号。XML所具有优秀的扩展性,使得它在网络工业应用上,比HTML有着更大的空间和前景。
SVG的开发和创作是基于XML的,因此,我们也能在SVG中开发出更多新的功能以提供更多的网络服务。例如,制作智能化的数据图像。图像中的数据可以根据需要,由应用程序读取、修改和统计并最终在图像中显示。这些应用是目前HTML及相关图像技术远不可及的。

  文本格式

  SVG文件是一元(文本)格式的。SVG图像和动画具有了以下文本格式所具备的特点:
  1、作为基于文本的格式,SVG图像中的文字也是文本格式。这不同于现在图像和动画中的文字。目前图像和动画中的文字实质上都是图像。因此,SVG中的文字可以被网络搜索引擎做为关键词搜寻。利用这一性质,通过SVG中定义的文字,就可以制作出非常高效的图像搜索引擎。图像中的文字也可以被用户浏览器查找。
  2、SVG图像可以方便的由程序语言来动态的生成。例如使用JavaScript,perl,Java等语言,开发自动图像和动画生成系统。这对于一些数据库制表是非常实用的。在线图像还可以根据后台数据库中的关系量实时的进行动态改变。
  3、SVG完全支持DOM(文档物件模型)。因而SVG以及SVG中的对象可以通过脚本语言接受外部事件的驱动,例如鼠标动作、键盘动作等,实现对自身或对其他物件、图像的控制,制作交互式的图像和动画。
  4、因为是文本格式,SVG可以很好的跨平台工作,同时,还可以解决相关的外部输出、色彩模式、网络带宽等问题。
  简言之,文本格式使得SVG获得了与其它技术标准更大的交互和融合的特点。


  与GIF,JPEG比较

  GIF,JPEG都是目前网络普遍使用的位图格式。SVG较GIF和JPEG有很多独特的优势:
  1、具有很高的图像品质。因为是矢量图像,分辨率独立,用户可以自由的放缩图像而不会破坏图像的清晰度。这对于查看某些图像细节例如数据图像中的数字,非常的有用。
  2、图像中的文字独立。如上一小节所述,SVG图像中的文字独立于图像,可以进行文本编辑和查询。
  3、较小文件尺寸。因为基于矢量格式,由语句完成图像的保存,SVG图像相比较GIF和JPEG具有更小的文件大小,下载更加迅速。
  4、色彩适应性更强。SVG图像具有一个1600万色彩的调色板,支持ICC(国际色彩协会)色彩标准,支持RGB色彩模式。
  5、可交互性。SVG基于XML,因而能轻易的制作强大的动态交互。SVG图像能对用户动作做出不同响应,例如高亮,声效,特效,动画等,体现了网络互动的本质。而GIF,JPEG都不可以产生交互。

  与SWF比较

  SWF文件格式是Flash的输出文件格式。从某种意义上,SWF与SVG有很多惊人的相似之处。但是,尽管Flash凭借其优越的表现形式和便利的创作工具成为目前网络动画设计的首选,SWF日益在网络中普及,但我们也应该看到,与SVG相比较,SWF存在着以下的不足:
  1、SWF是一个非开放标准。这就意味着该技术掌握在个体手中,技术的发展受到方方面面的限制。同时,SWF与其他的开放标准也没有完整的融合方案。尽管SWF目前已经提供了对XML的支持,但这种支持是单方面的。随着XML及其他开放标准的发展,SWF的不协调性将日益显著。
  2、SWF的可编辑性不如SVG。SWF做为最终的动画生成格式,其创作过程封装在SWF文件中,几乎无法再进行二次编辑。同时,SWF也不提供对文本格式的支持,因此,无法获得类似SVG的查询图像中文字的功能。

SVG的应用价值

    网络发展的需要,与其他开放标准兼容

  如同PNG作为W3C的位图图像工业标准,SVG是网络中解决矢量图像的工业标准.在SVG以前,除了Macromedia开发了SWF作为矢量的网络文件格式,还没有其他的矢量文件在网络中应用.因为位图文件受到本身的很多局限,在图形印刷和传输中,矢量文件有很大的应价值,所以,必定会有相应的矢量标准得到开发和应用,这就是SVG.
  作为W3C的推荐格式,SVG与现有的其他开放标准有很好的兼容性.这些标准包括DOM1,DOM2,CSS,XML,XPointer,XSLT,XSL,SMIL,HTML,XHTM等L.SVG与其他组织的标准化技术也能很好的协调一致,如ICC,URI,UNICODE,sRGB,ECMAScript/JavaScript,Java.
  使用SVG并不意味着我们将从此放弃现在的网络图像技术如GIF,JPEG,SWF.相比较这些目前有普遍应用的文件格式,SVG更适合网络发展的需求,开发和应用SVG意味着获得一个更优秀的工具和方法.

  数据表格,图像地图

  在应用领域,SVG可以非常适宜的应用在数据表格和图像地图中.在SVG的源文件中,通过变量可以很方便的控制需要的图形生成.这就为网络图像数据表格提供了很大的应用前景.一个简单的例子,现有的asp可以方便的构建动态数据网页,利用SVG,则可以同样方便的绘制动态数据图像,例如数据分析中的柱状图和饼状图.
  制作图像地图同样是SVG的一大优势.由于SVG是矢量格式,图像可以在任何显示分辨率下获得同样的图像效果,文件放大观看时也不会有任何的品质损失,因而可以完全可以制作这样的图像地图,其中包含了一个城市所有的地理信息,文件可以根据观看这不同的需要,对不同的地区进行放大显示,同时,每一个地理名词又可以独立的包含一段文字说明,或者包含相应的地理数据,但用户需要时,可以通过点击地理名词获得解释说明.这样的图像地图文件的文件大小也仅仅是K字节级别.

  无线设备的需求

  SVG另一个非常诱人的应用前景就是开发无线设备的图形和动画.例如目前使用的手机产品,其图像主要是WBMP.这种格式因为是位图文件,受到传输大小的限制,同时不提供彩色的色彩模式,所以显得很呆板.而如果利用SVG,只要在无线设备中安装一个文本解析器,就可以实现对SVG文件的识别和显示,同时,因为是矢量的文本文件,文件的尺寸不会很大,非常适合无线产品的网络传输.SVG还提供动画和多媒体编辑功能,所以可以支持二维的平面动画,支持声音文件和视频文件的播放.结合一些其他的技术,例如SMIL(多媒体同步整合语言),就可以实现创建一个非常理想的多媒体无线终端解决方案.


  图像搜索引擎

  不同于现在的二维图像,SVG是一个可实现交互和查询的文件格式.在SVG图像中,信息是一元代码形式的,是开放形式的.文字独立于图形信息.这就为图像搜索和查询提供了可能.例如,在一个SVG动画中,通过搜索某一个关键字,就可以在图像中查询到对应的信息.而这对于同样是矢量图像和动画格式的SWF就不可能实现.依据SVG的这种交互性,可以创建大型的图像搜索引擎.

  网页设计思想的改变

  采用SVG进行网页设计,是下一代的网页设计思想.现在的网页设计,通常是在位图图像软件中绘制好整体页面图像,然后进行图像切割,最后完成页面的文字编辑.通常这样的工作是很繁琐的,进行二次修改也很不简便.而利用SVG,则可以实现页面图形设计和文字编辑的一步完成.如果要进行远程协作完成网页设计,也只需要传输创作后的页面文件,而不必将所有的图像源文件和页面文件都传输.
  因为SVG能够很好的与HTML和XML兼容,所以,下一代的网页编辑软件将开始结合图像创作功能.许多现在需要通过外部图像或动画软件创作的效果,将可以直接在网页编辑软件中完成.
  结合SVG创作网页,将使网页设计师真正可以"画"出页面.

    SVG的基本格式

与HTML相类似,基于XML的SVG,语法和格式也是结构化的。所谓结构化,也就是文件中的对象通过特定的元素标签定义,任何元素都可以作为对象进行管理,文件是框架式的。掌握基本的文件框架,就可以阅读、编辑和创作自己的文件。

  
SVG使用一组组的元素标签,创建和组织文件以及文件中的对象。每一个SVG文件都包含最外层的<svg></svg>标签。该标签用于声明SVG文件的开始和结束。这等同于HTML文件中的HTML文件声明标签<html></html>。下面的代码是一个通常的独立SVG文件的头部标识:

   <?xml version="1.0" encoding="iso-8859-1"?>
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN"
"http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">
  <svg xml:space="preserve" width="5.5in" height=".5in">
  ...
  </svg>

   其中,<?xml version="1.0" encoding="iso-8859-1"?>建立了"本文件基于XML 1.0,编码方式是iso-8859-1"的基本信息。
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN" "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">虽然很长,但只要理解,它是一个注释性的提示信息。它声明了文件定义类型(DTD)。文件定义类型(DTD)是一套用于定义元素、元素属性和制定如何形成文件的标准规则。根据特定的需要,DTD可以进行自定义。该行省略不影响SVG文件的生成。
  <svg xml:space="preserve" width="5.5in" height=".5in">
  ...
  </svg>用于声明SVG文件主体的开始和结束,同时也声明了图像容器的大小。图像容器也就是最后图形或动画的生成尺寸,相当于绘画中使用的画布。

   SVG主体中的语法和格式定义,遵循XML标准。通过各类元素标签和标签对应的属性来描述SVG对象。SVG对象主要包括图形,路径和文本。关于SVG的对象,请参看<<SVG实战讲义>>,其中给出了SVG创作基本图形,动画,文字的一些例子.

   下面是一个调用mp3音乐的例子:

   <?xml version="1.0" standalone="no"?>
   <svg xmlns:a="http://www.adobe.com/svg10-extensions" a:timeline="independent" width="100%" height="100%" viewBox="0 0 620 420">

   <a:audio xlink:href="follow.mp3" volume="10" begin="0s" repeatDur="indefinite">
   </a:audio>
   </svg>

   将上面的源代码粘贴到windwos的记事本,选择文件类型为所有文件,保存文件为*.svg(后缀名自己填写),同时在文件保存的文件夹中放置一个名为follow的mp3文件,如果您的浏览器安装有SVG播放器,就可以听见mp3音乐.

SVG创作工具

    目前的SVG创作工具还处于开发和研制阶段,仍然没有一款非常成熟的包含静态,动态,交互功能创作的软件.这里介绍几个目前可以进行一些研究和测试的SVG创作软件.

  Adobe Illustator

  Adobe在SVG的开发中扮演了重要角色.Adobe Illustrator 9.0是较早的一款结合SVG功能的矢量创作软件.目前可以进行静态图形的创作和部分交互功能的实现.其交互功能需要手写javascript脚本.


  创作AI图像后,选择File->Export(文件->输出),选择文件类型SVG,在SVG Option面板中设置相关属性,可以输出SVG文件,关于属性设置,请参看<<SVG中文教程>>.

  Web Draw

 

    WebDraw是Jasc Software按照W3C组织制定的SVG规范书开发的矢量图像和动画制作工具,专业应用于SVG创作.WebDraw通过直接画布拖拽绘图以及滤镜效果模块化组合,可以避免手写源代码.同时提供源代码视图窗口,支持后续源代码编辑和修改.
  软件的整体布局类似于目前许多的图形创作软件.与职业的矢量创作软件Adobe Illustrator和Corel Draw相比较,Web Draw在功能上还不足以抗衡,但作为专业开发SVG的创作工具,也许可以预想,经过一段时间的积累,它将成为下一个成功的Fireworks.(Fireworks成功的开发了PNG格式.)
  最新版本是Preview Release 4.目前还不支持动态SVG效果.另外, 应用滤镜效果并不能在画布真实表达输出后的SVG图像.
  下载(4.45M):
  http://www.jasc.com/webdraw.asp (国外)
  http://www.2svg.com/ (国内)


Web Engine

    IMS Web Engine (Interactive Multimedia System)是Virtural Mechanics开发的一款网页创作软件,主要应用于创作静态和动态的HTML,DHTML和SVG页面.Web Engine是目前极少数不需要通过手写代码即可完成SVG动态交互创作的工具.它的精灵向导可以很快的定义简单的交互动作.
  Web Engine的界面比较粗旷,或者说不是很精细,很多操作是双击对象弹出面板,调整选项,这有点像当时的Flash3.0和4.0.Web Engine有一个比较不足的地方,给设计者带来很大的限制,就是没有提供源代码视图,无法直接进行源代码的修改和编辑.
  目前的版本是 Version 2 Beta.
  下载(3.86M):
  http://www.virtualmechanics.com/(国外)
  http://www.2svg.com/ (国内)

- 作者: nsyt 2005年07月14日, 星期四 10:00  回复(0) |  引用(1) 加入博采

GML、SVG、VML的比较

GML、SVG和VML都是基于XML的可用来描述矢量图形的标记语言,都是XML词表,它们的语法并不难理解,但它们都有各自不同的用途和特点,下面简单介绍一下。

GML(Geography Markup Language)
是基于XML的空间信息编码标准,由OpenGIS Consortium (OGC)提出,得到了许多公司的大力支持,如Oracle、Galdos、MapInfo、CubeWerx等。运用GML,封装的地理数据和图形解释是清楚分离的。

GML基于XML用文本表示地理信息
由于GML可看成是XML的一个具体的词表,熟悉了XML就比较容易理解GML。而且随着XML的应用日益广泛,GML也将受益。另外文本比较简单、直观,容易理解和编辑。

GML封装了地理信息及其属性
GML基于地理信息抽象模型,即空间实体特征及属性封装。地理特征包括一系列的属性和相应的几何信息,一般来说属性由名字、类型和值组成,几何信息由基本元素如点、线、面、曲线、多边形等组成。目前GML主要局限在二维应用,正扩展到二维半和三维空间以及特征间的拓扑关系。GML允许相当复杂的特征,如特征间的嵌套。例如飞机场由出租汽车道、飞机跑道等组成。

GML封装了空间地理参考系统
空间地理参考系统是地理信息系统数据处理的基础。GML封装了空间地理参考系统、主要的投影关系等,保证分布式处理的扩展性和灵活性。

GML可以实现地理数据的分布式存储
GML对地理数据的分发是非常方便的技术手段,但其作用不止局限于此,同样可以成为地理数据分布式存储的重要手段。主要的技术工具是XLink和Xpointer。
从上边的介绍可以看出GML作为描述空间信息的元语言的一些优点。它只能描述空间实体的矢量信息和属性,具体显示的时候可采用两种不同的途径:
l GML Drawà Display
l GML Transform à SVG, VML Draw àDisplay
第一种途径需要直接操作GML数据进行分析并显示。
第二种途径是把GML数据转换成相应的图形格式的数据,例如SVG,VML及X3D。然后由已经存在的支持这几种图形格式的软件进行显示。下面介绍一下SVG和VML。

VML(Vector Markup Language)
是一个最初由Microsoft开发的XML词表,现在也只有IE5.0以上版本对VML提供支持。使用VML可以在IE中绘制矢量图形,所以有人认为VML就是在IE中实现了画笔的功能。下面介绍一下VML的优点:
基于XML标准
XML是公认拥有无穷生命力的下一代网络标记语言, VML具有先天的优势,它的表示方法简单,易于扩展等等。
支持高质量的矢量图形显示
VML支持广泛的矢量图形特征,它们基于由相连接的直线和曲线描述路径。在VML中使用两个基本的元素:shape和group。这两个元素定义了VML的全部结构;shape描述一个矢量图形元素,而group用来将这些图形结合起来,这样它们可以作为一个整体进行处理。
VML规范包括大量的支持多种不同矢量图形特征的元素。下面是VML的预定义图形元素:
l Shape
l Path
l Line
l Polyline
l Curve
l Rect
l Roundrect
l Oval
l Arc
l Group
由文本构成的图像,并可集成到HTML
由于VML使用简单的文本来表示图像,这样就可用很少的字节来表示比较复杂的图像。VML与HTML兼容,通过在HTML中声明VML命名空间并声明处理函数,就可以和其他HTML元素一样使用VML元素,在客户端浏览器显示图像。VML标记里面可以定义DHTML大部分属性和事件,比如说id, name, title, onmouseover 等等。
支持交互与动画
但VML的功能不只是绘图,他还可以在图形中嵌入文本,并可实现超链,还可通过脚本语言实现一定的动画功能。VML赏析

SVG(Scalable Vector Graphics)
SVG是一种基于XML的开放的矢量图形描述语言。SVG图像是与XML1.0兼容的文档,SVG元素是指示如何绘制图像的一些指令,阅读器(Viewer)解释这些指令,把SVG图像在指定设备上显示出来。使用SVG可以在网页上显示出各种各样的高质量的矢量图形,支持很多您想象得出的功能:几何图形、动画、渐变色、滤镜效果等。最关键的是,它也是完全用普通文本来描述的!也就是说,这是一种专门为网络而设计的基于文本的图像格式。
SVG是对PGML和VML的一种综合,所以VML的优点也就成为SVG的优点,例如:
基于XML标准
高质量的矢量图像
由文本构成的图像
我们可以不用任何图像处理工具,仅仅用记事本就可以生成一个SVG图像。这对于图像处理的工作者来说可能会感到不可思议。其实仔细想想也可以理解,矢量图像一般是以算法指令来描述,建立在文本基础上的SVG图像中所有的描述语句都可以直接观察到,所以也非常容易进行二次修改与更新,"可升级"的特点在这里可以得到恰当的反映。
另外,与VML相比SVG还有一些优点:
灵活的文件格式
SVG可升级的特性不仅仅表现在二次修改方面,还表现在另外很多地方,包括这里介绍的灵活的文件格式。在以前的图像中,文本都作为位图而保存于图像中,图像形成以后不能单独对文本进行修改;在PNG格式中这一点有所改进,文本可作为一个独立的层存在;SVG更灵活地扩展了图像的文件格式,它由三个部分组成:矢量图形、位图和文字。这样SVG不仅仅可以应用矢量图像和文字对象,同样可以纳入位图,可以制作出任何其它格式图像能达到的效果。由于文件格式是文本形式的,可以很容易地在以后任何时候进行修改。而且在页面运行的过程中,也可以对很多部分做即时的修改,其中的图形描述还可以重复使用。
支持交互和动画
SVG支持SMIL(synchronized multimedia integration language),使得用户可以自由的同SVG中的元素完成一些交互的动作,从而完成既定的目标,这一点在目前单独依靠图片是完成不了的,需要由网页中的脚本语句来实现。
支持字符查找
查找"图片"中的字符,在SVG中成为可能。而这在其它格式的图片文件中则是不可能的。
支持Xlink 和Xpointer
   这样就可以在SVG文档之间制作超级链接。
SVG作为W3C组织正式推荐的图像格式,拥有众多的支持机构。像Adobe公司已经宣称将在推出的Adobe图像处理套件如Illustrator、Photoshop、GoLive和Cyber Studio中集成SVG的全部功能,并且还提供Netscape Navigator和IE的插件,以便使其能够直接支持SVG文件的浏览。Netscape和Microsoft公司也已经开始进军SVG领域,这标志着未来的网络浏览器将会内置对SVG文件的支持功能。
总结
 GML、SVG、VML都与矢量图形有着密切的关系:GML在表示实体的空间信息的同时加入了实体的其他属性信息,是表示实体的空间信息和属性的编码标准,但它并不支持直接显示图形。而VML和SVG是在表示图形的矢量信息同时加入了图形的显示信息(即以什么样的样式显示矢量图形),是显示矢量图形的两种比较好的格式。相比之下,SVG是综合了VML的优点后推出的,是国际标准,它比VML具有更多的优点,也有更广阔的前景。但由于VML有IE的支持,而SVG要想在浏览器中显示就需要安装插件,在这一点上,VML优于SVG。

- 作者: nsyt 2005年07月13日, 星期三 15:57  回复(0) |  引用(1) 加入博采