From Documentation

Jump to: navigation, search







Contents


In addition to generating HTML output to a browser, ZK could be used to generate (static) XML output to any client that recognizes it, such as RSS and Web Services.

Using ZK to generate XML output is straightforward:

  1. Uses the XML component set (http://www.zkoss.org/2007/xml and shortcut is xml).
  2. Maps the file extension to ZK Loader
  3. Maps the file extension to the XML component set

The XML component set also provides some special components, such as transformer that supports XSTL. Fore more information please refer to XML Components.

Use the XML Component Set

The XML component set (aka., the XML language, in ZK terminology) is used to generate XML output. Unlike the ZUL or XHTML component sets, all unknown[1] tags in a ZUML document are assumed to belong the native namespace. It means ZK generates them directly to the output without instantiating a ZK component for each of them.

The following is an example that generates the SVG output. It looks very similar to the XML output you want to generate, except you can use zscript, EL expressions, macro components and other ZK features.

XML SVG.png

 <?page contentType="image/svg+xml;charset=UTF-8"?>
 <svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"
 xmlns:z="zk">
     <z:zscript><![CDATA[
     String[] bgnds = {"purple", "blue", "yellow"};
     int[] rads = {30, 25, 20};
     ]]></z:zscript>
     <circle style="fill:${each}" z:forEach="${bgnds}"
         cx="${50+rads[forEachStatus.index]}"
         cy="${20+rads[forEachStatus.index]}"
         r="${rads[forEachStatus.index]}"/>
 </svg>

The generated output will be

<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"
	version="1.1">
	<circle style="fill:purple" cx="80" cy="50" r="30">
	</circle>
	<circle style="fill:blue" cx="75" cy="45" r="25">
	</circle>
	<circle style="fill:yellow" cx="70" cy="40" r="20">
	</circle>
</svg>

where

  • The content type is specified with the page directive. For SVG, it is image/svg+xml. The xml processing instruction (<?xml?>) and DOCTYPE of the output are also specified in the page directive.
  • All tags in this example, such as svg and circle, are associated with a namespace (http://www.w3.org/2000/svg) that is unknown to ZK Loader. Thus, they are assumed to belong the native namespace. They are output directly rather than instantiating a ZK component for each of them.
  • To use zscript, forEach and other ZK specific features, you have to specify the ZK namespace (zk).

  1. By the unknown tag we mean a XML element that is not associated with a XML namespace, or the namespace is unknown.

Maps the File Extension to ZK Loader

To let ZK Loader process the file, you have to associate it with the ZK Loader in WEB-INF/web.xml. In this example, we map all files with the .svg extension to ZK Loader[1]:

 <servlet-mapping>
     <servlet-name>zkLoader</servlet-name>
     <url-pattern>*.svg</url-pattern>
 </servlet-mapping>

  1. We assume ZK Loader (zkLoader) is mapped to org.zkoss.zk.ui.http.DHtmlLayoutServlet.

Maps the File Extension to the XML Component Set

Unless the file extension is .xml, you have to associate it with the XML component set (aka., the XML language) explicitly in WEB-INF/zk.xml. In this example, we map .svg to the XML component set:

 <language-mapping>
     <language-name>xml</language-name>
     <extension>svg</extension>
 </language-mapping>

where xml is the language name of the XML component set. Thus, when ZK Loader parses a file with the .svg extension, it knows the default language is the XML component set[1].


  1. For more information about language identification, please refer to ZUML Reference.

Version History

Last Update : 2011/7/25


Version Date Content
     



Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.



You got stuck here?
Let us know how we can improve this page
For specific questions please use the forum