Package groovy.text
Class XmlTemplateEngine
java.lang.Object
groovy.text.TemplateEngine
groovy.text.XmlTemplateEngine
Template engine for use in templating scenarios where both the template
source and the expected output are intended to be XML.
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
Fields -
Constructor Summary
ConstructorsConstructorDescriptionXmlTemplateEngine
(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
-