Class XmlTemplateEngine
Templates may use the normal '${expression}' and '$variable' notations to insert an arbitrary expression into the template. In addition, support is also provided for special tags: <gsp:scriptlet> (for inserting code fragments) and <gsp:expression> (for code fragments which produce output).
Comments and processing instructions will be removed as part of processing and special XML characters such as <, >, " and ' will be escaped using the respective XML notation. The output will also be indented using standard XML pretty printing.
The xmlns namespace definition for gsp:
tags will be removed
but other namespace definitions will be preserved (but may change to an
equivalent position within the XML tree).
Normally, the template source will be in a file but here is a simple example providing the XML template as a string:
def binding = [firstname:"Jochen", lastname:"Theodorou", nickname:"blackdrag", salutation:"Dear"] def engine = new groovy.text.XmlTemplateEngine() def text = '''\ <?xml version="1.0" encoding="UTF-8"?> <document xmlns:gsp='http://groovy.codehaus.org/2005/gsp' xmlns:foo='baz' type='letter'> <gsp:scriptlet>def greeting = "${salutation}est"</gsp:scriptlet> <gsp:expression>greeting</gsp:expression> <foo:to>$firstname "$nickname" $lastname</foo:to> How are you today? </document> ''' def template = engine.createTemplate(text).make(binding) println template.toString()This example will produce this output:
<document type='letter'> Dearest <foo:to xmlns:foo='baz'> Jochen "blackdrag" Theodorou </foo:to> How are you today? </document>The XML template engine can also be used as the engine for
TemplateServlet
by placing the
following in your web.xml file (plus a corresponding servlet-mapping element):
<servlet> <servlet-name>XmlTemplate</servlet-name> <servlet-class>groovy.servlet.TemplateServlet</servlet-class> <init-param> <param-name>template.engine</param-name> <param-value>groovy.text.XmlTemplateEngine</param-value> </init-param> </servlet>
- Author:
- Christian Stein, Paul King
-
Field Summary
-
Constructor Summary
ConstructorDescriptionXmlTemplateEngine
(XmlParser xmlParser, GroovyShell groovyShell) XmlTemplateEngine
(XmlParser xmlParser, ClassLoader parentLoader) XmlTemplateEngine
(String indentation, boolean validating) -
Method Summary
Modifier and TypeMethodDescriptioncreateTemplate
(Reader reader) void
setIndentation
(String indentation) toString()
Methods inherited from class groovy.text.TemplateEngine
createTemplate, createTemplate, createTemplate
-
Field Details
-
DEFAULT_INDENTATION
- See Also:
-
-
Constructor Details
-
XmlTemplateEngine
-
XmlTemplateEngine
public XmlTemplateEngine(String indentation, boolean validating) throws SAXException, ParserConfigurationException -
XmlTemplateEngine
-
XmlTemplateEngine
-
-
Method Details
-
createTemplate
public Template createTemplate(Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException - Specified by:
createTemplate
in classTemplateEngine
- Throws:
CompilationFailedException
ClassNotFoundException
IOException
-
getIndentation
-
setIndentation
-
toString
-