使用XML发布图像可能会是很麻烦的,如果你正在使用老的图像格式的话,例如GIF和JPEG。但是有了可伸缩矢量图(svg),这就是轻而易举的事了。由于svg是符合XML语法规格的,所以你可以只使用一点点XSL就创建好自定义的动态svg图像。
这项技术是基于创建一个svg模板,并修改其内容,让其产生新svg图像的。要开始这个过程,就需要使用一个背景图像。你可以使用多种工具,例如JASC的WebDraw,来创建启动图像。实际上,你也可以使用任何文本编辑器,因为所有的svg图像都只不过是XML。
Listing A是一个简单的svg按纽,你会用它作为这个过程的基础模板。如果把这个文档载入到svg浏览器,你会看到一个显示着“按纽”字样的简单蓝色按钮。如果点击这个按钮,它会把你带到Builder.com的主页。
把这个svg文档转换成为XSL模板,你就可以开始了。这个模板基本上把这个文档分割成两部分:静态部分是XSL模板,动态部分是一个XML文档,你会用这个文档来完成转换。这个你要动态处理的图像有两个组件——URL和按纽的文本。一个新的XML文档,如Listing B所示,包含有动态源数据。
正如你能够看到的那样,这个新的按钮会显示Google的字样,并会链接到这个常用的搜索引擎。下一步是把svg图像转换成XSL模板。从本质上说,通过把数据从XML文档里抽出来,你就能把链接和按钮文字做成动态的。Listing C显示的是XSL模板。
这个XSL模板已经翻新了原来的svg文档,让它的动态更强。这是个只使用了单元素模板的简单转换。在被处理的时候,这个链点会用源文档的/button/url元素填充,而且按纽文本的内容是/button/text元素的值。
实际处理源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文档类似。
和通常的观念不一样,你可以在Web页面上使用svg图形。它们没有被作为<img>标签的源文件来实现,而是作为嵌入对象被实现的。Listing E是一个显示新svg图像的简单Web页面。