public class XmlTemplateEngine extends TemplateEngine
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>
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
DEFAULT_INDENTATION |
| Constructor and Description |
|---|
XmlTemplateEngine() |
XmlTemplateEngine(java.lang.String indentation,
boolean validating) |
XmlTemplateEngine(XmlParser xmlParser,
java.lang.ClassLoader parentLoader) |
XmlTemplateEngine(XmlParser xmlParser,
GroovyShell groovyShell) |
| Modifier and Type | Method and Description |
|---|---|
Template |
createTemplate(java.io.Reader reader) |
java.lang.String |
getIndentation() |
void |
setIndentation(java.lang.String indentation) |
java.lang.String |
toString() |
createTemplate, createTemplate, createTemplatepublic static final java.lang.String DEFAULT_INDENTATION
public XmlTemplateEngine()
throws org.xml.sax.SAXException,
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXExceptionjavax.xml.parsers.ParserConfigurationExceptionpublic XmlTemplateEngine(java.lang.String indentation,
boolean validating)
throws org.xml.sax.SAXException,
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXExceptionjavax.xml.parsers.ParserConfigurationExceptionpublic XmlTemplateEngine(XmlParser xmlParser, java.lang.ClassLoader parentLoader)
public XmlTemplateEngine(XmlParser xmlParser, GroovyShell groovyShell)
public Template createTemplate(java.io.Reader reader) throws CompilationFailedException, java.lang.ClassNotFoundException, java.io.IOException
createTemplate in class TemplateEngineCompilationFailedExceptionjava.lang.ClassNotFoundExceptionjava.io.IOExceptionpublic java.lang.String getIndentation()
public void setIndentation(java.lang.String indentation)
public java.lang.String toString()
toString in class java.lang.Object