使用SVG和XSL创建动态图像

2003-1-2 11:16:33【作者】 畅享网 【进入论坛】
广告

使用SVG和XSL创建动态图像

使用XML发布图像可能会是很麻烦的,如果你正在使用老的图像格式的话,例如GIF和JPEG。但是有了可伸缩矢量图(SVG),这就是轻而易举的事了。由于SVG是符合XML语法规格的,所以你可以只使用一点点XSL就创建好自定义的动态SVG图像。

SVG模板

这项技术是基于创建一个SVG模板,并修改其内容,让其产生新SVG图像的。要开始这个过程,就需要使用一个背景图像。你可以使用多种工具,例如JASC的WebDraw,来创建启动图像。实际上,你也可以使用任何文本编辑器,因为所有的SVG图像都只不过是XML。

Listing A是一个简单的SVG按纽,你会用它作为这个过程的基础模板。如果把这个文档载入到SVG浏览器,你会看到一个显示着“按纽”字样的简单蓝色按钮。如果点击这个按钮,它会把你带到Builder.com的主页。

把XML作为源数据

把这个SVG文档转换成为XSL模板,你就可以开始了。这个模板基本上把这个文档分割成两部分:静态部分是XSL模板,动态部分是一个XML文档,你会用这个文档来完成转换。这个你要动态处理的图像有两个组件——URL和按纽的文本。一个新的XML文档,如Listing B所示,包含有动态源数据。

正如你能够看到的那样,这个新的按钮会显示Google的字样,并会链接到这个常用的搜索引擎。下一步是把SVG图像转换成XSL模板。从本质上说,通过把数据从XML文档里抽出来,你就能把链接和按钮文字做成动态的。Listing C显示的是XSL模板。

这个XSL模板已经翻新了原来的SVG文档,让它的动态更强。这是个只使用了单元素模板的简单转换。在被处理的时候,这个链点会用源文档的/button/url元素填充,而且按纽文本的内容是/button/text元素的值。

把XML转换成SVG

实际处理源XML和XSL模板的方法有很多种。在实际操作过程中,你最有可能使用Xalan API来用程序把XSL和XML转换成SVG文档。为了更好的说明问题,就是要使用Xalan命令行。要运行这一过程,在命令提示符下输入以下的内容:

java org.apache.xalan.xslt.Process -IN custombutton.xml -XSL button.xsl -OUT
custombutton.svg

这一步的结果看起来会和Listing D里的SVG文档类似。

深入SVG

《使用SVG在浏览器里绘画和注释》

SVG是一种描述XML 2-D图形的语言,它可以让你把浏览器作为绘画的工具。尽管没有获得当前浏览器的支持,SVG的功能还是可以通过免费的插件来实现。这个教程就能告诉你怎么使用SVG的功能。

《浏览器里轻松创建表格和图表》

SVG让在浏览器里表示图形的过程变得很容易。在这篇文章里你就能看到如何在基于浏览器的客户端创建表格和图表。

在Web上显示SVG

和通常的观念不一样,你可以在Web页面上使用SVG图形。它们没有被作为<img>标签的源文件来实现,而是作为嵌入对象被实现的。Listing E是一个显示新SVG图像的简单Web页面。

Listing A: button.svg

<?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <svg width="200" height="50"> <a xlink:href="http://www.builder.com"> <rect x="3" y="6" width="193" height="37" style="fill:rgb(0,0,255);stroke:rgb(0,0,0);stroke-width:1"/> <text x="26px" y="17px" transform="translate(13 12)" style="fill:rgb(0,0,0);font-size:24;font-family:Arial">Button</text> </a> </svg>

Listing B: custombutton.xml

<?xml version="1.0" ?> <button> <text>Google</text> <url>http://www.google.com</url> </button>

Listing C: button.xsl

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink" > <xsl:output method="xml" encoding="ISO-8859-1" indent="yes" /> <xsl:template match="/"> <svg width="200" height="50"> <a> <xsl:attribute name="xlink:href"> <xsl:value-of select="/button/url" /> </xsl:attribute> <rect x="3" y="6" width="193" height="37" style="fill:rgb(0,0,255);stroke:rgb(0,0,0);stroke-width:1"/> <text x="26px" y="17px" transform="translate(13 12)" style="fill:rgb(0,0,0);font-size:24;font-family:Arial"> <xsl:value-of select="/button/text" /> </text> </a> </svg> </xsl:template> </xsl:stylesheet>

Listing D: custom.svg

<?xml version="1.0" encoding="ISO-8859-1"?> <svg xmlns:xlink="http://www.w3.org/1999/xlink" height="50" width="200"> <a xlink:href="http://www.google.com"> <rect style="fill:rgb(0,0,255);stroke:rgb(0,0,0);stroke-width:1" height="37" width="193" y="6" x="3"/> <text style="fill:rgb(0,0,0);font-size:24;font-family:Arial" transform="translate(13 12)" y="17px" x="26px">Google</text> </a> </svg>

Listing E: custombutton.html

<html> <head> <title>SVG Image Demo</title> </head> <body bgcolor="#ffffff"> <center> <table border="0"> <tr> <td align="center"> Click the image to visit the Google search engine: </td> </tr> <tr> <td align="center"> <embed src="custombutton.svg" type="image/svg+xml" pluginspace="http://www.adobe.com/svg/viewer/install/" > </td> </tr> </table> </center> </body> </html>

如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系
企业信息化杂谈[原创]企业信息化的价值点探讨

我们都知道,信息技术是企业经营管理目标的手段之一。通俗点说,信息技术对企业而言就是一个工具。

IT管理—君无心[原创]文档信息安全简谈

文档信息安全工作要根据自身的需求来具体部署,也就是量体裁衣。信息安全等级划分、企业商业机密等是不同的概念。

第二届中国管理软件与IT服务年会—2..

“第二届中国管理软件与IT服务年会”于2008年7月23日-25日举行,由AMT集团与畅享网共同主办,无锡扬名高新技术产业园特别赞助支持。

CIO职场,强者生存?

在2008年,我们将继续看到CIO向商业运营方向发展。与此同时,我们也会看到商业管理人员将与技术管理人员一起竞争CIO岗位。 IT领导者的就职机会虽有不少,但其难度将会大幅提高。2……