blob: 34efb7db77df44ba02271546cdb958afc77bbb3a [file] [log] [blame]
<!doctype html>
<!-- Generated by FreeMarker/Docgen from DocBook -->
<html lang="en" class="page-type-docgen-detailed-toc">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>Apache FreeMarker Manual</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="format-detection" content="telephone=no">
<meta property="og:site_name" content="Apache FreeMarker Manual">
<meta property="og:title" content="Apache FreeMarker Manual">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="https://freemarker.apache.org/docs/index.html">
<link rel="canonical" href="https://freemarker.apache.org/docs/index.html">
<link rel="icon" href="favicon.png" type="image/png">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1707770044859">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js"></script>
</head>
<body itemscope itemtype="https://schema.org/Code">
<meta itemprop="url" content="https://freemarker.apache.org/docs/">
<meta itemprop="name" content="Apache FreeMarker Manual">
<!--[if lte IE 9]>
<div class="oldBrowserWarning" style="display: block">
Unsupported web browser - Use a modern browser to view this website!
</div>
<![endif]--> <div class="oldBrowserWarning">
Unsupported web browser - Use a modern browser to view this website!
</div>
<div class="header-top-bg"><div class="site-width header-top"><div id="hamburger-menu" role="button"></div> <div class="logo">
<a href="https://freemarker.apache.org" role="banner"><img itemprop="image" src="logo.png" alt="FreeMarker"></a> </div>
<ul class="tabs"><li><a href="https://freemarker.apache.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="https://freemarker.apache.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/projects/FREEMARKER" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="https://freemarker.apache.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="search-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"> <div class="breadcrumbs">
<ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">Table of Contents</span></li></ul> </div>
<div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div> <div class="main-content site-width">
<div class="content-wrapper">
<div id="table-of-contents-wrapper" class="col-left">
<script>var breadcrumb = [];</script>
<script src="toc.js?1707770044859"></script>
<script src="docgen-resources/main.min.js?1707770044859"></script>
</div>
<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><span class="paging-arrow disabled previous"><span>Previous</span></span><a class="paging-arrow next" href="dgui.html"><span>Next</span></a></div><div class="title-wrapper">
<h1 class="content-header header-book" id="autoid_1" itemprop="headline">Apache FreeMarker Manual <span class="subtitle productname">For Freemarker 2.3.32</span>
</h1>
</div></div><div class="page-menu">
<ul><li><a class="page-menu-link" href="dgui.html" data-menu-target="dgui">Template Author&#39;s Guide</a><ul><li><a class="page-menu-link" href="dgui_quickstart.html" data-menu-target="dgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="dgui_quickstart_basics.html" data-menu-target="dgui_quickstart_basics">Template + data-model = output</a></li><li><a class="page-menu-link" href="dgui_quickstart_datamodel.html" data-menu-target="dgui_quickstart_datamodel">The data-model at a glance</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html" data-menu-target="dgui_quickstart_template">The template at a glance</a><ul><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_2" data-menu-target="autoid_2">Some basic directives</a><ul><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_3" data-menu-target="autoid_3">The if directive</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_4" data-menu-target="autoid_4">The list directive</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_5" data-menu-target="autoid_5">The include directive</a></li></ul></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_6" data-menu-target="autoid_6">Using directives together</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_7" data-menu-target="autoid_7">Using built-ins</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_8" data-menu-target="autoid_8">Dealing with missing variables</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#dgui_quickstart_template_autoescaping" data-menu-target="dgui_quickstart_template_autoescaping">Escaping for HTML, XML and other markup</a></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel.html" data-menu-target="dgui_datamodel">Values, Types</a><ul><li><a class="page-menu-link" href="dgui_datamodel_basics.html" data-menu-target="dgui_datamodel_basics">Basics</a><ul><li><a class="page-menu-link" href="dgui_datamodel_basics.html#topic.value" data-menu-target="topic.value">What is a value?</a></li><li><a class="page-menu-link" href="dgui_datamodel_basics.html#autoid_9" data-menu-target="autoid_9">What is type?</a></li><li><a class="page-menu-link" href="dgui_datamodel_basics.html#autoid_10" data-menu-target="autoid_10">The data-model is a hash</a></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel_types.html" data-menu-target="dgui_datamodel_types">The types</a><ul><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_scalar" data-menu-target="dgui_datamodel_scalar">Scalars</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_container" data-menu-target="dgui_datamodel_container">Containers</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#autoid_11" data-menu-target="autoid_11">Subroutines</a><ul><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_method" data-menu-target="dgui_datamodel_method">Methods and functions</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_userdefdir" data-menu-target="dgui_datamodel_userdefdir">User-defined directives</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#autoid_12" data-menu-target="autoid_12">Function/method versus user-defined directive</a></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#autoid_13" data-menu-target="autoid_13">Miscellaneous</a><ul><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_node" data-menu-target="dgui_datamodel_node">Nodes</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_markupoutput" data-menu-target="dgui_datamodel_markupoutput">Markup output</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_template.html" data-menu-target="dgui_template">The Template</a><ul><li><a class="page-menu-link" href="dgui_template_overallstructure.html" data-menu-target="dgui_template_overallstructure">Overall structure</a></li><li><a class="page-menu-link" href="dgui_template_directives.html" data-menu-target="dgui_template_directives">Directives</a></li><li><a class="page-menu-link" href="dgui_template_exp.html" data-menu-target="dgui_template_exp">Expressions</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#exp_cheatsheet" data-menu-target="exp_cheatsheet">Quick overview (cheat sheet)</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct" data-menu-target="dgui_template_exp_direct">Specify values directly</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_string" data-menu-target="dgui_template_exp_direct_string">Strings</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_number" data-menu-target="dgui_template_exp_direct_number">Numbers</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_boolean" data-menu-target="dgui_template_exp_direct_boolean">Booleans</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_seuqence" data-menu-target="dgui_template_exp_direct_seuqence">Sequences</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_ranges" data-menu-target="dgui_template_exp_direct_ranges">Ranges</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_hash" data-menu-target="dgui_template_exp_direct_hash">Hashes</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var" data-menu-target="dgui_template_exp_var">Retrieving variables</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_toplevel" data-menu-target="dgui_template_exp_var_toplevel">Top-level variables</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_hash" data-menu-target="dgui_template_exp_var_hash">Retrieving data from a hash</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_sequence" data-menu-target="dgui_template_exp_var_sequence">Retrieving data from a sequence</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_special" data-menu-target="dgui_template_exp_var_special">Special variables</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_stringop" data-menu-target="dgui_template_exp_stringop">String operations</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation" data-menu-target="dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_get_character" data-menu-target="dgui_template_exp_get_character">Getting a character</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_stringop_slice" data-menu-target="dgui_template_exp_stringop_slice">String slicing (substrings)</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_sequenceop" data-menu-target="dgui_template_exp_sequenceop">Sequence operations</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat" data-menu-target="dgui_template_exp_sequenceop_cat">Concatenation</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice" data-menu-target="dgui_template_exp_seqenceop_slice">Sequence slicing</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_hashop" data-menu-target="dgui_template_exp_hashop">Hash operations</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_hashop_cat" data-menu-target="dgui_template_exp_hashop_cat">Concatenation</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_arit" data-menu-target="dgui_template_exp_arit">Arithmetical calculations</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_comparison" data-menu-target="dgui_template_exp_comparison">Comparison</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_logicalop" data-menu-target="dgui_template_exp_logicalop">Logical operations</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_builtin" data-menu-target="dgui_template_exp_builtin">Built-ins</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_methodcall" data-menu-target="dgui_template_exp_methodcall">Method call</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_missing" data-menu-target="dgui_template_exp_missing">Handling missing values</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_missing_default" data-menu-target="dgui_template_exp_missing_default">Default value operator</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_missing_test" data-menu-target="dgui_template_exp_missing_test">Missing value test operator</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_assignment" data-menu-target="dgui_template_exp_assignment">Assignment Operators</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_lambda" data-menu-target="dgui_template_exp_lambda">Local lambdas</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_parentheses" data-menu-target="dgui_template_exp_parentheses">Parentheses</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_whitespace" data-menu-target="dgui_template_exp_whitespace">White-space in expressions</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_comment" data-menu-target="dgui_template_exp_comment">Comments in expressions</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_precedence" data-menu-target="dgui_template_exp_precedence">Operator precedence</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html" data-menu-target="dgui_template_valueinsertion">Interpolations</a><ul><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_14" data-menu-target="autoid_14">Overview</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_15" data-menu-target="autoid_15">Automatic escaping</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_16" data-menu-target="autoid_16">Guide to inserting numerical values</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#dgui_template_valueinserion_universal_date" data-menu-target="dgui_template_valueinserion_universal_date">Guide to inserting date/time/date-time values</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_17" data-menu-target="autoid_17">Guide to inserting boolean values</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_18" data-menu-target="autoid_18">Exact conversion rules</a></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_misc.html" data-menu-target="dgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html" data-menu-target="dgui_misc_userdefdir">Defining your own directives</a><ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_19" data-menu-target="autoid_19">Basics</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_20" data-menu-target="autoid_20">Parameters</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_21" data-menu-target="autoid_21">Nested content</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#dgui_misc_userdefdir_loopvar" data-menu-target="dgui_misc_userdefdir_loopvar">Macros with loop variables</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_22" data-menu-target="autoid_22">More about user-defined directives and macros</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc_var.html" data-menu-target="dgui_misc_var">Defining variables in the template</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html" data-menu-target="dgui_misc_namespace">Namespaces</a><ul><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_23" data-menu-target="autoid_23">Creating a library</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_24" data-menu-target="autoid_24">Writing the variables of imported namespaces</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_25" data-menu-target="autoid_25">Namespaces and data-model</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_26" data-menu-target="autoid_26">The life-cycle of namespaces</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_27" data-menu-target="autoid_27">Auto-importing</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html" data-menu-target="dgui_misc_autoescaping">Auto-escaping and output formats</a><ul><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat" data-menu-target="dgui_misc_autoescaping_outputformat">Output formats</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_overrideoformat" data-menu-target="dgui_misc_autoescaping_overrideoformat">Overriding the output format in templates</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_disableautoesc" data-menu-target="dgui_misc_autoescaping_disableautoesc">Disabling auto escaping</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues" data-menu-target="dgui_misc_autoescaping_movalues">"Markup output" values</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#autoid_28" data-menu-target="autoid_28">Further details and tricky cases</a><ul><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_nonmarkupof" data-menu-target="dgui_misc_autoescaping_nonmarkupof">Non-markup output formats</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_mixingoutputformats" data-menu-target="dgui_misc_autoescaping_mixingoutputformats">Inserting markup output values from other markups</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_concatenation" data-menu-target="dgui_misc_autoescaping_concatenation">Markup output values and the "+"
operator</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_stringliteral" data-menu-target="dgui_misc_autoescaping_stringliteral">${...} inside string literals</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#autoid_29" data-menu-target="autoid_29">Combined output formats</a></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_misc_computer_vs_human_format.html" data-menu-target="dgui_misc_computer_vs_human_format">Formatting for humans, or for computers</a></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html" data-menu-target="dgui_misc_whitespace">White-space handling</a><ul><li><a class="page-menu-link" href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping" data-menu-target="dgui_misc_whitespace_stripping">White-space stripping</a></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html#autoid_30" data-menu-target="autoid_30">Using compress directive</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html" data-menu-target="dgui_misc_alternativesyntax">Alternative (square bracket) syntax</a><ul><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_tag" data-menu-target="dgui_misc_alternativesyntax_tag">Square bracket tag syntax</a></li><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation" data-menu-target="dgui_misc_alternativesyntax_interpolation">Square bracket interpolation syntax</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="pgui.html" data-menu-target="pgui">Programmer&#39;s Guide</a><ul><li><a class="page-menu-link" href="pgui_quickstart.html" data-menu-target="pgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="pgui_quickstart_createconfiguration.html" data-menu-target="pgui_quickstart_createconfiguration">Create a configuration instance</a></li><li><a class="page-menu-link" href="pgui_quickstart_createdatamodel.html" data-menu-target="pgui_quickstart_createdatamodel">Create a data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_gettemplate.html" data-menu-target="pgui_quickstart_gettemplate">Get the template</a></li><li><a class="page-menu-link" href="pgui_quickstart_merge.html" data-menu-target="pgui_quickstart_merge">Merging the template with the data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_all.html" data-menu-target="pgui_quickstart_all">Putting all together</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel.html" data-menu-target="pgui_datamodel">The Data Model</a><ul><li><a class="page-menu-link" href="pgui_datamodel_basics.html" data-menu-target="pgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_datamodel_scalar.html" data-menu-target="pgui_datamodel_scalar">Scalars</a><ul><li><a class="page-menu-link" href="pgui_datamodel_scalar.html#autoid_31" data-menu-target="autoid_31">Difficulties with the "date-like" types</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html" data-menu-target="pgui_datamodel_parent">Containers</a><ul><li><a class="page-menu-link" href="pgui_datamodel_parent.html#autoid_32" data-menu-target="autoid_32">Hashes</a></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html#autoid_33" data-menu-target="autoid_33">Sequences</a></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html#autoid_34" data-menu-target="autoid_34">Collections</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel_method.html" data-menu-target="pgui_datamodel_method">Methods</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html" data-menu-target="pgui_datamodel_directive">Directives</a><ul><li><a class="page-menu-link" href="pgui_datamodel_directive.html#autoid_35" data-menu-target="autoid_35">Example 1</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html#autoid_36" data-menu-target="autoid_36">Example 2</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html#autoid_37" data-menu-target="autoid_37">Notices</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel_node.html" data-menu-target="pgui_datamodel_node">Node variables</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html" data-menu-target="pgui_datamodel_objectWrapper">Object wrappers</a><ul><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html#pgui_datamodel_defaultObjectWrapper" data-menu-target="pgui_datamodel_defaultObjectWrapper">The default object wrapper</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html#pgui_datamodel_customObjectWrappingExample" data-menu-target="pgui_datamodel_customObjectWrappingExample">Custom object wrapping example</a></li></ul></li></ul></li><li><a class="page-menu-link" href="pgui_config.html" data-menu-target="pgui_config">The Configuration</a><ul><li><a class="page-menu-link" href="pgui_config_basics.html" data-menu-target="pgui_config_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_config_sharedvariables.html" data-menu-target="pgui_config_sharedvariables">Shared variables</a></li><li><a class="page-menu-link" href="pgui_config_settings.html" data-menu-target="pgui_config_settings">Settings</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html" data-menu-target="pgui_config_templateloading">Template loading</a><ul><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_38" data-menu-target="autoid_38">Template loaders</a><ul><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_39" data-menu-target="autoid_39">Built-in template loaders</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_40" data-menu-target="autoid_40">Loading templates from multiple locations</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_41" data-menu-target="autoid_41">Loading templates from other sources</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_42" data-menu-target="autoid_42">The template name (template path)</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#pgui_config_templateloading_caching" data-menu-target="pgui_config_templateloading_caching">Template caching</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html" data-menu-target="pgui_config_errorhandling">Error handling</a><ul><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_43" data-menu-target="autoid_43">The possible exceptions</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_44" data-menu-target="autoid_44">Customizing the behavior regarding
TemplateException-s</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_45" data-menu-target="autoid_45">TemplateException logging</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_46" data-menu-target="autoid_46">Explicit error handling in templates</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_templateconfigurations.html" data-menu-target="pgui_config_templateconfigurations">Template configurations</a></li><li><a class="page-menu-link" href="pgui_config_outputformatsautoesc.html" data-menu-target="pgui_config_outputformatsautoesc">Associating output formats with templates</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html" data-menu-target="pgui_config_custom_formats">Custom number and date/time formats</a><ul><li><a class="page-menu-link" href="pgui_config_custom_formats.html#autoid_50" data-menu-target="autoid_50">Overview</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_alg_simple" data-menu-target="pgui_config_custom_formats_ex_cust_alg_simple">Simple custom number format example</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_algo_advanced" data-menu-target="pgui_config_custom_formats_ex_cust_algo_advanced">Advanced custom number format example</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_algo_date" data-menu-target="pgui_config_custom_formats_ex_cust_algo_date">Custom date/time format example</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_alias" data-menu-target="pgui_config_custom_formats_ex_alias">Alias format example</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_model_aware" data-menu-target="pgui_config_custom_formats_ex_model_aware">Model-aware format example</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html" data-menu-target="pgui_config_incompatible_improvements">The &quot;incompatible improvements&quot; setting</a><ul><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html#autoid_51" data-menu-target="autoid_51">What does it do</a></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set" data-menu-target="pgui_config_incompatible_improvements_how_to_set">How to set it</a></li></ul></li></ul></li><li><a class="page-menu-link" href="pgui_misc.html" data-menu-target="pgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="pgui_misc_var.html" data-menu-target="pgui_misc_var">Variables, scopes</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html" data-menu-target="pgui_misc_charset">Charset issues</a><ul><li><a class="page-menu-link" href="pgui_misc_charset.html#autoid_52" data-menu-target="autoid_52">The charset of the input</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html#autoid_53" data-menu-target="autoid_53">The charset of the output</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_multithreading.html" data-menu-target="pgui_misc_multithreading">Multithreading</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html" data-menu-target="pgui_misc_beanwrapper">Bean wrapper</a><ul><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#beanswrapper_hash" data-menu-target="beanswrapper_hash">TemplateHashModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_54" data-menu-target="autoid_54">A word on security</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_55" data-menu-target="autoid_55">TemplateScalarModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_56" data-menu-target="autoid_56">TemplateNumberModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_57" data-menu-target="autoid_57">TemplateCollectionModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_58" data-menu-target="autoid_58">TemplateSequenceModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#beanswrapper_method" data-menu-target="beanswrapper_method">TemplateMethodModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_59" data-menu-target="autoid_59">Unwrapping rules</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_60" data-menu-target="autoid_60">Accessing static methods</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#jdk_15_enums" data-menu-target="jdk_15_enums">Accessing enums</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_logging.html" data-menu-target="pgui_misc_logging">Logging</a><ul><li><a class="page-menu-link" href="pgui_misc_logging.html#autoid_61" data-menu-target="autoid_61">Logging library selection</a></li><li><a class="page-menu-link" href="pgui_misc_logging.html#autoid_62" data-menu-target="autoid_62">Logging categories</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_servlet.html" data-menu-target="pgui_misc_servlet">Using FreeMarker with servlets</a><ul><li><a class="page-menu-link" href="pgui_misc_servlet.html#pgui_misc_servlet_model2" data-menu-target="pgui_misc_servlet_model2">Using FreeMarker for "Model 2"</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html#pgui_misc_servlet_include" data-menu-target="pgui_misc_servlet_include">Including content from other web application
resources</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html#autoid_63" data-menu-target="autoid_63">Using JSP custom tags in FTL</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html#autoid_64" data-menu-target="autoid_64">Embed FTL into JSP pages</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_secureenv.html" data-menu-target="pgui_misc_secureenv">Configuring security policy for FreeMarker</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html" data-menu-target="pgui_misc_xml_legacy">Legacy XML wrapper implementation</a><ul><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_65" data-menu-target="autoid_65">TemplateScalarModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_66" data-menu-target="autoid_66">TemplateCollectionModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_67" data-menu-target="autoid_67">TemplateSequenceModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_68" data-menu-target="autoid_68">TemplateHashModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_69" data-menu-target="autoid_69">TemplateMethodModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_70" data-menu-target="autoid_70">Namespace handling</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_ant.html" data-menu-target="pgui_misc_ant">Using FreeMarker with Ant</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html" data-menu-target="pgui_misc_jythonwrapper">Jython wrapper</a><ul><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_71" data-menu-target="autoid_71">TemplateHashModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_72" data-menu-target="autoid_72">TemplateScalarModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_73" data-menu-target="autoid_73">TemplateBooleanModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_74" data-menu-target="autoid_74">TemplateNumberModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_75" data-menu-target="autoid_75">TemplateSequenceModel functionality</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="ref.html" data-menu-target="ref">Template Language Reference</a><ul><li><a class="page-menu-link" href="ref_builtins.html" data-menu-target="ref_builtins">Built-in Reference</a><ul><li><a class="page-menu-link" href="ref_builtins_alphaidx.html" data-menu-target="ref_builtins_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_builtins_string.html" data-menu-target="ref_builtins_string">Built-ins for strings</a><ul><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_boolean" data-menu-target="ref_builtin_boolean">boolean</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_cap_first" data-menu-target="ref_builtin_cap_first">cap_first</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_c_string" data-menu-target="ref_builtin_c_string">c (for string value)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_cn_string" data-menu-target="ref_builtin_cn_string">cn (for string value)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_c_lower_case" data-menu-target="ref_builtin_c_lower_case">c_lower_case</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_c_upper_case" data-menu-target="ref_builtin_c_upper_case">c_upper_case</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_capitalize" data-menu-target="ref_builtin_capitalize">capitalize</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_chop_linebreak" data-menu-target="ref_builtin_chop_linebreak">chop_linebreak</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_contains" data-menu-target="ref_builtin_contains">contains</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_string_date" data-menu-target="ref_builtin_string_date">date, time, datetime</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_ends_with" data-menu-target="ref_builtin_ends_with">ends_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_ensure_ends_with" data-menu-target="ref_builtin_ensure_ends_with">ensure_ends_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_ensure_starts_with" data-menu-target="ref_builtin_ensure_starts_with">ensure_starts_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_esc" data-menu-target="ref_builtin_esc">esc</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_groups" data-menu-target="ref_builtin_groups">groups</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_html" data-menu-target="ref_builtin_html">html (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_index_of" data-menu-target="ref_builtin_index_of">index_of</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_j_string" data-menu-target="ref_builtin_j_string">j_string</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_js_string" data-menu-target="ref_builtin_js_string">js_string</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_json_string" data-menu-target="ref_builtin_json_string">json_string</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_after" data-menu-target="ref_builtin_keep_after">keep_after</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_after_last" data-menu-target="ref_builtin_keep_after_last">keep_after_last</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_before" data-menu-target="ref_builtin_keep_before">keep_before</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_before_last" data-menu-target="ref_builtin_keep_before_last">keep_before_last</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_last_index_of" data-menu-target="ref_builtin_last_index_of">last_index_of</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_left_pad" data-menu-target="ref_builtin_left_pad">left_pad</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_length" data-menu-target="ref_builtin_length">length</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_lower_case" data-menu-target="ref_builtin_lower_case">lower_case</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_matches" data-menu-target="ref_builtin_matches">matches</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_no_esc" data-menu-target="ref_builtin_no_esc">no_esc</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_number" data-menu-target="ref_builtin_number">number</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_replace" data-menu-target="ref_builtin_replace">replace</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_right_pad" data-menu-target="ref_builtin_right_pad">right_pad</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_remove_beginning" data-menu-target="ref_builtin_remove_beginning">remove_beginning</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_remove_ending" data-menu-target="ref_builtin_remove_ending">remove_ending</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_rtf" data-menu-target="ref_builtin_rtf">rtf (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_split" data-menu-target="ref_builtin_split">split</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_starts_with" data-menu-target="ref_builtin_starts_with">starts_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_string_for_string" data-menu-target="ref_builtin_string_for_string">string (when used with a string value)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_substring" data-menu-target="ref_builtin_substring">substring (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_trim" data-menu-target="ref_builtin_trim">trim</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_truncate" data-menu-target="ref_builtin_truncate">truncate, truncate_...</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_uncap_first" data-menu-target="ref_builtin_uncap_first">uncap_first</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_upper_case" data-menu-target="ref_builtin_upper_case">upper_case</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_url" data-menu-target="ref_builtin_url">url</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_url_path" data-menu-target="ref_builtin_url_path">url_path</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_word_list" data-menu-target="ref_builtin_word_list">word_list</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_xhtml" data-menu-target="ref_builtin_xhtml">xhtml (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_xml" data-menu-target="ref_builtin_xml">xml (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_string_flags" data-menu-target="ref_builtin_string_flags">Common flags</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_number.html" data-menu-target="ref_builtins_number">Built-ins for numbers</a><ul><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_abs" data-menu-target="ref_builtin_abs">abs</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_c" data-menu-target="ref_builtin_c">c (for numbers)</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_cn" data-menu-target="ref_builtin_cn">cn (for numbers)</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_is_infinite" data-menu-target="ref_builtin_is_infinite">is_infinite</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_is_nan" data-menu-target="ref_builtin_is_nan">is_nan</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_lower_abc" data-menu-target="ref_builtin_lower_abc">lower_abc</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_rounding" data-menu-target="ref_builtin_rounding">round, floor, ceiling</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_string_for_number" data-menu-target="ref_builtin_string_for_number">string (when used with a numerical value)</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_upper_abc" data-menu-target="ref_builtin_upper_abc">upper_abc</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_date.html" data-menu-target="ref_builtins_date">Built-ins for date/time/date-time values</a><ul><li><a class="page-menu-link" href="ref_builtins_date.html#ref_builtin_date_datetype" data-menu-target="ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
value)</a></li><li><a class="page-menu-link" href="ref_builtins_date.html#ref_builtin_date_if_unknown" data-menu-target="ref_builtin_date_if_unknown">date_if_unknown, time_if_unknown, datetime_if_unknown</a></li><li><a class="page-menu-link" href="ref_builtins_date.html#ref_builtin_date_iso" data-menu-target="ref_builtin_date_iso">iso_...</a></li><li><a class="page-menu-link" href="ref_builtins_date.html#ref_builtin_string_for_date" data-menu-target="ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_boolean.html" data-menu-target="ref_builtins_boolean">Built-ins for booleans</a><ul><li><a class="page-menu-link" href="ref_builtins_boolean.html#ref_builtin_c_boolean" data-menu-target="ref_builtin_c_boolean">c (for boolean value)</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html#ref_builtin_cn_boolean" data-menu-target="ref_builtin_cn_boolean">cn (for boolean value)</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html#ref_builtin_string_for_boolean" data-menu-target="ref_builtin_string_for_boolean">string (when used with a boolean value)</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html#ref_builtin_then" data-menu-target="ref_builtin_then">then</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_sequence.html" data-menu-target="ref_builtins_sequence">Built-ins for sequences</a><ul><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_chunk" data-menu-target="ref_builtin_chunk">chunk</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_drop_while" data-menu-target="ref_builtin_drop_while">drop_while</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_filter" data-menu-target="ref_builtin_filter">filter</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_first" data-menu-target="ref_builtin_first">first</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_join" data-menu-target="ref_builtin_join">join</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_last" data-menu-target="ref_builtin_last">last</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_map" data-menu-target="ref_builtin_map">map</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_min_max" data-menu-target="ref_builtin_min_max">min, max</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_reverse" data-menu-target="ref_builtin_reverse">reverse</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_seq_contains" data-menu-target="ref_builtin_seq_contains">seq_contains</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_seq_index_of" data-menu-target="ref_builtin_seq_index_of">seq_index_of</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_seq_last_index_of" data-menu-target="ref_builtin_seq_last_index_of">seq_last_index_of</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_size" data-menu-target="ref_builtin_size">size</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_sort" data-menu-target="ref_builtin_sort">sort</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_sort_by" data-menu-target="ref_builtin_sort_by">sort_by</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_take_while" data-menu-target="ref_builtin_take_while">take_while</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_hash.html" data-menu-target="ref_builtins_hash">Built-ins for hashes</a><ul><li><a class="page-menu-link" href="ref_builtins_hash.html#ref_builtin_keys" data-menu-target="ref_builtin_keys">keys</a></li><li><a class="page-menu-link" href="ref_builtins_hash.html#ref_builtin_values" data-menu-target="ref_builtin_values">values</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_node.html" data-menu-target="ref_builtins_node">Built-ins for nodes (for XML)</a><ul><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_ancestors" data-menu-target="ref_builtin_ancestors">ancestors</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_children" data-menu-target="ref_builtin_children">children</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_node_name" data-menu-target="ref_builtin_node_name">node_name</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_next_sibling" data-menu-target="ref_builtin_next_sibling">next_sibling</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_node_namespace" data-menu-target="ref_builtin_node_namespace">node_namespace</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_node_type" data-menu-target="ref_builtin_node_type">node_type</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_parent" data-menu-target="ref_builtin_parent">parent</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_previous_sibling" data-menu-target="ref_builtin_previous_sibling">previous_sibling</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_root" data-menu-target="ref_builtin_root">root</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html" data-menu-target="ref_builtins_loop_var">Loop variable built-ins</a><ul><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_counter" data-menu-target="ref_builtin_counter">counter</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_has_next" data-menu-target="ref_builtin_has_next">has_next</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_index" data-menu-target="ref_builtin_index">index</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_even_item" data-menu-target="ref_builtin_is_even_item">is_even_item</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_first" data-menu-target="ref_builtin_is_first">is_first</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_last" data-menu-target="ref_builtin_is_last">is_last</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_odd_item" data-menu-target="ref_builtin_is_odd_item">is_odd_item</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_item_cycle" data-menu-target="ref_builtin_item_cycle">item_cycle</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_item_parity" data-menu-target="ref_builtin_item_parity">item_parity</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_item_parity_cap" data-menu-target="ref_builtin_item_parity_cap">item_parity_cap</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_type_independent.html" data-menu-target="ref_builtins_type_independent">Type independent built-ins</a><ul><li><a class="page-menu-link" href="ref_builtins_type_independent.html#ref_builtin_switch" data-menu-target="ref_builtin_switch">switch</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_expert.html" data-menu-target="ref_builtins_expert">Seldom used and expert built-ins</a><ul><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_absolute_template_name" data-menu-target="ref_builtin_absolute_template_name">absolute_template_name</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_buitin_api_and_has_api" data-menu-target="ref_buitin_api_and_has_api">api, has_api</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_numType" data-menu-target="ref_builtin_numType">byte, double, float, int, long, short</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_eval" data-menu-target="ref_builtin_eval">eval</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_eval_json" data-menu-target="ref_builtin_eval_json">eval_json</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_has_content" data-menu-target="ref_builtin_has_content">has_content</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_interpret" data-menu-target="ref_builtin_interpret">interpret</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_isType" data-menu-target="ref_builtin_isType">is_...</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_markup_string" data-menu-target="ref_builtin_markup_string">markup_string</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_namespace" data-menu-target="ref_builtin_namespace">namespace</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_new" data-menu-target="ref_builtin_new">new</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_numToDate" data-menu-target="ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_sequence" data-menu-target="ref_builtin_sequence">sequence</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_with_args" data-menu-target="ref_builtin_with_args">with_args</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_with_args_last" data-menu-target="ref_builtin_with_args_last">with_args_last</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directives.html" data-menu-target="ref_directives">Directive Reference</a><ul><li><a class="page-menu-link" href="ref_directive_alphaidx.html" data-menu-target="ref_directive_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_directive_assign.html" data-menu-target="ref_directive_assign">assign</a><ul><li><a class="page-menu-link" href="ref_directive_assign.html#autoid_78" data-menu-target="autoid_78">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_assign.html#autoid_79" data-menu-target="autoid_79">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_attempt.html" data-menu-target="ref_directive_attempt">attempt, recover</a><ul><li><a class="page-menu-link" href="ref_directive_attempt.html#autoid_80" data-menu-target="autoid_80">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_attempt.html#autoid_81" data-menu-target="autoid_81">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_autoesc.html" data-menu-target="ref_directive_autoesc">autoesc</a><ul><li><a class="page-menu-link" href="ref_directive_autoesc.html#autoid_82" data-menu-target="autoid_82">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_autoesc.html#autoid_83" data-menu-target="autoid_83">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_compress.html" data-menu-target="ref_directive_compress">compress</a><ul><li><a class="page-menu-link" href="ref_directive_compress.html#autoid_84" data-menu-target="autoid_84">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_compress.html#autoid_85" data-menu-target="autoid_85">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_escape.html" data-menu-target="ref_directive_escape">escape, noescape (deprecated)</a><ul><li><a class="page-menu-link" href="ref_directive_escape.html#autoid_86" data-menu-target="autoid_86">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_escape.html#autoid_87" data-menu-target="autoid_87">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_flush.html" data-menu-target="ref_directive_flush">flush</a><ul><li><a class="page-menu-link" href="ref_directive_flush.html#autoid_88" data-menu-target="autoid_88">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_flush.html#autoid_89" data-menu-target="autoid_89">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_ftl.html" data-menu-target="ref_directive_ftl">ftl</a><ul><li><a class="page-menu-link" href="ref_directive_ftl.html#autoid_90" data-menu-target="autoid_90">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_ftl.html#autoid_91" data-menu-target="autoid_91">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_function.html" data-menu-target="ref_directive_function">function, return</a><ul><li><a class="page-menu-link" href="ref_directive_function.html#autoid_92" data-menu-target="autoid_92">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_function.html#autoid_93" data-menu-target="autoid_93">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_global.html" data-menu-target="ref_directive_global">global</a><ul><li><a class="page-menu-link" href="ref_directive_global.html#autoid_94" data-menu-target="autoid_94">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_global.html#autoid_95" data-menu-target="autoid_95">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_if.html" data-menu-target="ref_directive_if">if, else, elseif</a><ul><li><a class="page-menu-link" href="ref_directive_if.html#autoid_96" data-menu-target="autoid_96">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_if.html#autoid_97" data-menu-target="autoid_97">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_import.html" data-menu-target="ref_directive_import">import</a><ul><li><a class="page-menu-link" href="ref_directive_import.html#autoid_98" data-menu-target="autoid_98">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_import.html#autoid_99" data-menu-target="autoid_99">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_include.html" data-menu-target="ref_directive_include">include</a><ul><li><a class="page-menu-link" href="ref_directive_include.html#autoid_100" data-menu-target="autoid_100">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_include.html#autoid_101" data-menu-target="autoid_101">Description</a><ul><li><a class="page-menu-link" href="ref_directive_include.html#ref_directive_include_acquisition" data-menu-target="ref_directive_include_acquisition">Using acquisition</a></li><li><a class="page-menu-link" href="ref_directive_include.html#ref_directive_include_localized" data-menu-target="ref_directive_include_localized">Localized lookup</a></li><li><a class="page-menu-link" href="ref_directive_include.html#topic.import_vs_include" data-menu-target="topic.import_vs_include">Why <code class="inline-code">import</code> should be used instead of
<code class="inline-code">include</code></a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_list.html" data-menu-target="ref_directive_list">list, else, items, sep, break, continue</a><ul><li><a class="page-menu-link" href="ref_directive_list.html#autoid_102" data-menu-target="autoid_102">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_103" data-menu-target="autoid_103">Description</a><ul><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_simple" data-menu-target="ref_list_simple">Simplest form</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_else" data-menu-target="ref_list_else">else directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_items" data-menu-target="ref_list_items">items directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_sep" data-menu-target="ref_list_sep">sep directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_break" data-menu-target="ref_list_break">break directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_continue" data-menu-target="ref_list_continue">continue directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_accessing_state" data-menu-target="ref_list_accessing_state">Accessing iteration state</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_skipping" data-menu-target="ref_list_skipping">Skipping items conditionally</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_nesting" data-menu-target="ref_list_nesting">Nesting loops into each other</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_missing_element" data-menu-target="ref_list_missing_element">Treatment of missing (null) elements</a></li><li><a class="page-menu-link" href="ref_directive_list.html#ref_list_java_notes" data-menu-target="ref_list_java_notes">Notes for Java programmers</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_local.html" data-menu-target="ref_directive_local">local</a><ul><li><a class="page-menu-link" href="ref_directive_local.html#autoid_106" data-menu-target="autoid_106">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_local.html#autoid_107" data-menu-target="autoid_107">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_macro.html" data-menu-target="ref_directive_macro">macro, nested, return</a><ul><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_108" data-menu-target="autoid_108">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_109" data-menu-target="autoid_109">Description</a><ul><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_110" data-menu-target="autoid_110">nested</a></li><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_111" data-menu-target="autoid_111">return</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_noautoesc.html" data-menu-target="ref_directive_noautoesc">noautoesc</a><ul><li><a class="page-menu-link" href="ref_directive_noautoesc.html#autoid_112" data-menu-target="autoid_112">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_noautoesc.html#autoid_113" data-menu-target="autoid_113">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_noparse.html" data-menu-target="ref_directive_noparse">noparse</a><ul><li><a class="page-menu-link" href="ref_directive_noparse.html#autoid_114" data-menu-target="autoid_114">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_noparse.html#autoid_115" data-menu-target="autoid_115">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_nt.html" data-menu-target="ref_directive_nt">nt</a><ul><li><a class="page-menu-link" href="ref_directive_nt.html#autoid_116" data-menu-target="autoid_116">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_nt.html#autoid_117" data-menu-target="autoid_117">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_outputformat.html" data-menu-target="ref_directive_outputformat">outputformat</a><ul><li><a class="page-menu-link" href="ref_directive_outputformat.html#autoid_118" data-menu-target="autoid_118">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_outputformat.html#autoid_119" data-menu-target="autoid_119">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_setting.html" data-menu-target="ref_directive_setting">setting</a><ul><li><a class="page-menu-link" href="ref_directive_setting.html#autoid_120" data-menu-target="autoid_120">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_setting.html#autoid_121" data-menu-target="autoid_121">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_stop.html" data-menu-target="ref_directive_stop">stop</a><ul><li><a class="page-menu-link" href="ref_directive_stop.html#autoid_122" data-menu-target="autoid_122">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_stop.html#autoid_123" data-menu-target="autoid_123">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_switch.html" data-menu-target="ref_directive_switch">switch, case, default, break</a><ul><li><a class="page-menu-link" href="ref_directive_switch.html#autoid_124" data-menu-target="autoid_124">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_switch.html#autoid_125" data-menu-target="autoid_125">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_t.html" data-menu-target="ref_directive_t">t, lt, rt</a><ul><li><a class="page-menu-link" href="ref_directive_t.html#autoid_126" data-menu-target="autoid_126">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_t.html#autoid_127" data-menu-target="autoid_127">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_userDefined.html" data-menu-target="ref_directive_userDefined">User-defined directive (&lt;@...&gt;)</a><ul><li><a class="page-menu-link" href="ref_directive_userDefined.html#autoid_128" data-menu-target="autoid_128">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html#autoid_129" data-menu-target="autoid_129">Description</a><ul><li><a class="page-menu-link" href="ref_directive_userDefined.html#ref_directive_userDefined_entTag" data-menu-target="ref_directive_userDefined_entTag">End-tag</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html#ref_directive_userDefined_loopVar" data-menu-target="ref_directive_userDefined_loopVar">Loop variables</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html#ref_directive_userDefined_positionalParam" data-menu-target="ref_directive_userDefined_positionalParam">Positional parameter passing</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_visit.html" data-menu-target="ref_directive_visit">visit, recurse, fallback</a><ul><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_130" data-menu-target="autoid_130">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_131" data-menu-target="autoid_131">Description</a><ul><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_132" data-menu-target="autoid_132">Visit</a></li><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_133" data-menu-target="autoid_133">Recurse</a></li><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_134" data-menu-target="autoid_134">Fallback</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_specvar.html" data-menu-target="ref_specvar">Special Variable Reference</a></li><li><a class="page-menu-link" href="ref_reservednames.html" data-menu-target="ref_reservednames">Reserved names in FTL</a></li><li><a class="page-menu-link" href="ref_deprecated.html" data-menu-target="ref_deprecated">Deprecated FTL constructs</a><ul><li><a class="page-menu-link" href="ref_depr_directive.html" data-menu-target="ref_depr_directive">List of deprecated directives</a></li><li><a class="page-menu-link" href="ref_depr_builtin.html" data-menu-target="ref_depr_builtin">List of deprecated built-ins</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html" data-menu-target="ref_depr_oldmacro">Old-style macro and call directives</a><ul><li><a class="page-menu-link" href="ref_depr_oldmacro.html#autoid_135" data-menu-target="autoid_135">Synopsis</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html#autoid_136" data-menu-target="autoid_136">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_depr_transform.html" data-menu-target="ref_depr_transform">Transform directive</a><ul><li><a class="page-menu-link" href="ref_depr_transform.html#autoid_137" data-menu-target="autoid_137">Synopsis</a></li><li><a class="page-menu-link" href="ref_depr_transform.html#autoid_138" data-menu-target="autoid_138">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_depr_oldsyntax.html" data-menu-target="ref_depr_oldsyntax">Old FTL syntax</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html" data-menu-target="ref_depr_numerical_interpolation">#{...}: Numerical interpolation</a><ul><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html#autoid_139" data-menu-target="autoid_139">Synopsis</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html#autoid_140" data-menu-target="autoid_140">Description</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="xgui.html" data-menu-target="xgui">XML Processing Guide</a><ul><li><a class="page-menu-link" href="xgui_preface.html" data-menu-target="xgui_preface">Preface</a></li><li><a class="page-menu-link" href="xgui_expose.html" data-menu-target="xgui_expose">Exposing XML documents</a><ul><li><a class="page-menu-link" href="xgui_expose_dom.html" data-menu-target="xgui_expose_dom">The DOM tree</a></li><li><a class="page-menu-link" href="xgui_expose_put.html" data-menu-target="xgui_expose_put">Putting the XML into the data-model</a></li></ul></li><li><a class="page-menu-link" href="xgui_imperative.html" data-menu-target="xgui_imperative">Imperative XML processing</a><ul><li><a class="page-menu-link" href="xgui_imperative_learn.html" data-menu-target="xgui_imperative_learn">Basics</a><ul><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_141" data-menu-target="autoid_141">Accessing elements by name</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_142" data-menu-target="autoid_142">Accessing attributes</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_143" data-menu-target="autoid_143">Exploring the tree</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#xgui_imperative_learn_xpath" data-menu-target="xgui_imperative_learn_xpath">Using XPath expressions</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_144" data-menu-target="autoid_144">XML namespaces</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_145" data-menu-target="autoid_145">Don&#39;t forget escaping!</a></li></ul></li><li><a class="page-menu-link" href="xgui_imperative_formal.html" data-menu-target="xgui_imperative_formal">Details</a><ul><li><a class="page-menu-link" href="xgui_imperative_formal.html#autoid_146" data-menu-target="autoid_146">Node sequences</a></li></ul></li></ul></li><li><a class="page-menu-link" href="xgui_declarative.html" data-menu-target="xgui_declarative">Declarative XML processing</a><ul><li><a class="page-menu-link" href="xgui_declarative_basics.html" data-menu-target="xgui_declarative_basics">Basics</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html" data-menu-target="xgui_declarative_details">Details</a><ul><li><a class="page-menu-link" href="xgui_declarative_details.html#autoid_147" data-menu-target="autoid_147">Default handlers</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html#autoid_148" data-menu-target="autoid_148">Visiting a single node</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html#autoid_149" data-menu-target="autoid_149">XML namespaces</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="app.html" data-menu-target="app">Appendixes</a><ul><li><a class="page-menu-link" href="app_faq.html" data-menu-target="app_faq">FAQ</a></li><li><a class="page-menu-link" href="app_versions.html" data-menu-target="app_versions">Version history</a><ul><li><a class="page-menu-link" href="versions_2_3_32.html" data-menu-target="versions_2_3_32">2.3.32</a><ul><li><a class="page-menu-link" href="versions_2_3_32.html#autoid_150" data-menu-target="autoid_150">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_32.html#autoid_151" data-menu-target="autoid_151">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_31.html" data-menu-target="versions_2_3_31">2.3.31</a><ul><li><a class="page-menu-link" href="versions_2_3_31.html#autoid_152" data-menu-target="autoid_152">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_31.html#autoid_153" data-menu-target="autoid_153">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_30.html" data-menu-target="versions_2_3_30">2.3.30</a><ul><li><a class="page-menu-link" href="versions_2_3_30.html#autoid_154" data-menu-target="autoid_154">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_30.html#autoid_155" data-menu-target="autoid_155">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_29.html" data-menu-target="versions_2_3_29">2.3.29</a><ul><li><a class="page-menu-link" href="versions_2_3_29.html#autoid_156" data-menu-target="autoid_156">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_29.html#autoid_157" data-menu-target="autoid_157">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_28.html" data-menu-target="versions_2_3_28">2.3.28</a><ul><li><a class="page-menu-link" href="versions_2_3_28.html#autoid_158" data-menu-target="autoid_158">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_28.html#autoid_159" data-menu-target="autoid_159">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_28.html#autoid_160" data-menu-target="autoid_160">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_27.html" data-menu-target="versions_2_3_27">2.3.27 (incubating at Apache)</a><ul><li><a class="page-menu-link" href="versions_2_3_27.html#autoid_161" data-menu-target="autoid_161">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_27.html#autoid_162" data-menu-target="autoid_162">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_26.html" data-menu-target="versions_2_3_26">2.3.26 (incubating at Apache)</a><ul><li><a class="page-menu-link" href="versions_2_3_26.html#autoid_163" data-menu-target="autoid_163">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_26.html#autoid_164" data-menu-target="autoid_164">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_26.html#autoid_165" data-menu-target="autoid_165">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_25.html" data-menu-target="versions_2_3_25">2.3.25 (incubating at Apache)</a><ul><li><a class="page-menu-link" href="versions_2_3_25.html#autoid_166" data-menu-target="autoid_166">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_25.html#autoid_167" data-menu-target="autoid_167">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_24.html" data-menu-target="versions_2_3_24">2.3.24 (incubating at Apache)</a><ul><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_168" data-menu-target="autoid_168">Legal changes</a></li><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_169" data-menu-target="autoid_169">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_170" data-menu-target="autoid_170">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_171" data-menu-target="autoid_171">Changes compared to 2.3.24 Release Candidate 1</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_23.html" data-menu-target="versions_2_3_23">2.3.23</a><ul><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_172" data-menu-target="autoid_172">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_173" data-menu-target="autoid_173">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_174" data-menu-target="autoid_174">Other changes</a></li><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_175" data-menu-target="autoid_175">Notes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_22.html" data-menu-target="versions_2_3_22">2.3.22</a><ul><li><a class="page-menu-link" href="versions_2_3_22.html#autoid_176" data-menu-target="autoid_176">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_22.html#autoid_177" data-menu-target="autoid_177">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_22.html#autoid_178" data-menu-target="autoid_178">Notes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_21.html" data-menu-target="versions_2_3_21">2.3.21</a><ul><li><a class="page-menu-link" href="versions_2_3_21.html#autoid_179" data-menu-target="autoid_179">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_21.html#autoid_180" data-menu-target="autoid_180">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_21.html#autoid_181" data-menu-target="autoid_181">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_20.html" data-menu-target="versions_2_3_20">2.3.20</a><ul><li><a class="page-menu-link" href="versions_2_3_20.html#autoid_182" data-menu-target="autoid_182">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_20.html#autoid_183" data-menu-target="autoid_183">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_20.html#autoid_184" data-menu-target="autoid_184">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_19.html" data-menu-target="versions_2_3_19">2.3.19</a><ul><li><a class="page-menu-link" href="versions_2_3_19.html#autoid_185" data-menu-target="autoid_185">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_19.html#autoid_186" data-menu-target="autoid_186">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_18.html" data-menu-target="versions_2_3_18">2.3.18</a><ul><li><a class="page-menu-link" href="versions_2_3_18.html#autoid_187" data-menu-target="autoid_187">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_18.html#autoid_188" data-menu-target="autoid_188">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_17.html" data-menu-target="versions_2_3_17">2.3.17</a><ul><li><a class="page-menu-link" href="versions_2_3_17.html#autoid_189" data-menu-target="autoid_189">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_17.html#autoid_190" data-menu-target="autoid_190">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_17.html#autoid_191" data-menu-target="autoid_191">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_16.html" data-menu-target="versions_2_3_16">2.3.16</a><ul><li><a class="page-menu-link" href="versions_2_3_16.html#autoid_192" data-menu-target="autoid_192">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_16.html#autoid_193" data-menu-target="autoid_193">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_15.html" data-menu-target="versions_2_3_15">2.3.15</a><ul><li><a class="page-menu-link" href="versions_2_3_15.html#autoid_194" data-menu-target="autoid_194">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_15.html#autoid_195" data-menu-target="autoid_195">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_14.html" data-menu-target="versions_2_3_14">2.3.14</a><ul><li><a class="page-menu-link" href="versions_2_3_14.html#autoid_196" data-menu-target="autoid_196">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_14.html#autoid_197" data-menu-target="autoid_197">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_13.html" data-menu-target="versions_2_3_13">2.3.13</a><ul><li><a class="page-menu-link" href="versions_2_3_13.html#autoid_198" data-menu-target="autoid_198">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_13.html#autoid_199" data-menu-target="autoid_199">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_12.html" data-menu-target="versions_2_3_12">2.3.12</a><ul><li><a class="page-menu-link" href="versions_2_3_12.html#autoid_200" data-menu-target="autoid_200">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_11.html" data-menu-target="versions_2_3_11">2.3.11</a><ul><li><a class="page-menu-link" href="versions_2_3_11.html#autoid_201" data-menu-target="autoid_201">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_11.html#autoid_202" data-menu-target="autoid_202">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_11.html#autoid_203" data-menu-target="autoid_203">Documentation changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_10.html" data-menu-target="versions_2_3_10">2.3.10</a><ul><li><a class="page-menu-link" href="versions_2_3_10.html#autoid_204" data-menu-target="autoid_204">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_10.html#autoid_205" data-menu-target="autoid_205">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_9.html" data-menu-target="versions_2_3_9">2.3.9</a><ul><li><a class="page-menu-link" href="versions_2_3_9.html#autoid_206" data-menu-target="autoid_206">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_8.html" data-menu-target="versions_2_3_8">2.3.8</a><ul><li><a class="page-menu-link" href="versions_2_3_8.html#autoid_207" data-menu-target="autoid_207">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_7.html" data-menu-target="versions_2_3_7">2.3.7</a><ul><li><a class="page-menu-link" href="versions_2_3_7.html#autoid_208" data-menu-target="autoid_208">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_7.html#autoid_209" data-menu-target="autoid_209">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html" data-menu-target="versions_2_3_7rc1">2.3.7 RC1</a><ul><li><a class="page-menu-link" href="versions_2_3_7rc1.html#autoid_210" data-menu-target="autoid_210">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html#autoid_211" data-menu-target="autoid_211">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_6.html" data-menu-target="versions_2_3_6">2.3.6</a><ul><li><a class="page-menu-link" href="versions_2_3_6.html#autoid_212" data-menu-target="autoid_212">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_5.html" data-menu-target="versions_2_3_5">2.3.5</a><ul><li><a class="page-menu-link" href="versions_2_3_5.html#autoid_213" data-menu-target="autoid_213">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_5.html#autoid_214" data-menu-target="autoid_214">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_4.html" data-menu-target="versions_2_3_4">2.3.4</a><ul><li><a class="page-menu-link" href="versions_2_3_4.html#autoid_215" data-menu-target="autoid_215">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_4.html#autoid_216" data-menu-target="autoid_216">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_4.html#autoid_217" data-menu-target="autoid_217">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_3.html" data-menu-target="versions_2_3_3">2.3.3</a><ul><li><a class="page-menu-link" href="versions_2_3_3.html#autoid_218" data-menu-target="autoid_218">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_3.html#autoid_219" data-menu-target="autoid_219">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_3.html#autoid_220" data-menu-target="autoid_220">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_2.html" data-menu-target="versions_2_3_2">2.3.2</a><ul><li><a class="page-menu-link" href="versions_2_3_2.html#autoid_221" data-menu-target="autoid_221">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_1.html" data-menu-target="versions_2_3_1">2.3.1</a><ul><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_222" data-menu-target="autoid_222">Possible backward compatibility issue</a></li><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_223" data-menu-target="autoid_223">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_224" data-menu-target="autoid_224">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_225" data-menu-target="autoid_225">Other changes</a></li><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_226" data-menu-target="autoid_226">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_227" data-menu-target="autoid_227">Differences between the preview release and final
release</a></li></ul></li></ul></li><li><a class="page-menu-link" href="versions_2_3.html" data-menu-target="versions_2_3">2.3</a><ul><li><a class="page-menu-link" href="versions_2_3.html#autoid_228" data-menu-target="autoid_228">Non backward-compatible changes!</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_229" data-menu-target="autoid_229">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_230" data-menu-target="autoid_230">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_231" data-menu-target="autoid_231">Other changes</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_232" data-menu-target="autoid_232">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="versions_2_3.html#autoid_233" data-menu-target="autoid_233">Differences between the final release and Release Candidate
4</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_234" data-menu-target="autoid_234">Differences between the Release Candidate 4 and Release
Candidate 3</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_235" data-menu-target="autoid_235">Differences between the Release Candidate 3 and Release
Candidate 2</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_236" data-menu-target="autoid_236">Differences between the Release Candidate 2 and Release
Candidate 1</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_237" data-menu-target="autoid_237">Differences between the Release Candidate 1 and Preview 16
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_238" data-menu-target="autoid_238">Differences between the Preview 16 and Preview 15
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_239" data-menu-target="autoid_239">Differences between the Preview 15 and Preview 14
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_240" data-menu-target="autoid_240">Differences between the Preview 14 and Preview 13
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_241" data-menu-target="autoid_241">Differences between the Preview 13 and Preview 12
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_242" data-menu-target="autoid_242">Differences between the Preview 12 and Preview 11
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_243" data-menu-target="autoid_243">Differences between the Preview 11 and Preview 10
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_244" data-menu-target="autoid_244">Differences between the Preview 10 and Preview 9
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_245" data-menu-target="autoid_245">Differences between the Preview 9 and Preview 8
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_246" data-menu-target="autoid_246">Differences between the Preview 8 and Preview 7
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_247" data-menu-target="autoid_247">Differences between the Preview 7 and Preview 6
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_248" data-menu-target="autoid_248">Differences between the Preview 6 and Preview 5
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_249" data-menu-target="autoid_249">Differences between the Preview 5 and Preview 4
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_250" data-menu-target="autoid_250">Differences between the Preview 4 and Preview 3
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_251" data-menu-target="autoid_251">Differences between the Preview 3 and Preview 2
releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_252" data-menu-target="autoid_252">Differences between the Preview 2 and Preview 1
releases</a></li></ul></li></ul></li><li><a class="page-menu-link" href="versions_2_2_8.html" data-menu-target="versions_2_2_8">2.2.8</a><ul><li><a class="page-menu-link" href="versions_2_2_8.html#autoid_253" data-menu-target="autoid_253">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_2_8.html#autoid_254" data-menu-target="autoid_254">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2_8.html#autoid_255" data-menu-target="autoid_255">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_7.html" data-menu-target="versions_2_2_7">2.2.7</a><ul><li><a class="page-menu-link" href="versions_2_2_7.html#autoid_256" data-menu-target="autoid_256">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_6.html" data-menu-target="versions_2_2_6">2.2.6</a><ul><li><a class="page-menu-link" href="versions_2_2_6.html#autoid_257" data-menu-target="autoid_257">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_2_6.html#autoid_258" data-menu-target="autoid_258">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2_6.html#autoid_259" data-menu-target="autoid_259">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_5.html" data-menu-target="versions_2_2_5">2.2.5</a><ul><li><a class="page-menu-link" href="versions_2_2_5.html#autoid_260" data-menu-target="autoid_260">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_4.html" data-menu-target="versions_2_2_4">2.2.4</a><ul><li><a class="page-menu-link" href="versions_2_2_4.html#autoid_261" data-menu-target="autoid_261">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2_4.html#autoid_262" data-menu-target="autoid_262">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_3.html" data-menu-target="versions_2_2_3">2.2.3</a><ul><li><a class="page-menu-link" href="versions_2_2_3.html#autoid_263" data-menu-target="autoid_263">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_2_3.html#autoid_264" data-menu-target="autoid_264">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_2.html" data-menu-target="versions_2_2_2">2.2.2</a><ul><li><a class="page-menu-link" href="versions_2_2_2.html#autoid_265" data-menu-target="autoid_265">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_1.html" data-menu-target="versions_2_2_1">2.2.1</a><ul><li><a class="page-menu-link" href="versions_2_2_1.html#autoid_266" data-menu-target="autoid_266">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_2_1.html#autoid_267" data-menu-target="autoid_267">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2.html" data-menu-target="versions_2_2">2.2</a><ul><li><a class="page-menu-link" href="versions_2_2.html#autoid_268" data-menu-target="autoid_268">Non backward-compatible changes!</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_269" data-menu-target="autoid_269">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_270" data-menu-target="autoid_270">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_271" data-menu-target="autoid_271">Other changes</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_272" data-menu-target="autoid_272">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="versions_2_2.html#autoid_273" data-menu-target="autoid_273">Differences between the final and RC2 releases</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_274" data-menu-target="autoid_274">Differences between the RC2 and RC1 releases</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_275" data-menu-target="autoid_275">Differences between the Preview 2 and RC1 releases</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_276" data-menu-target="autoid_276">Differences between the Preview 1 and Preview 2
releases</a></li></ul></li></ul></li><li><a class="page-menu-link" href="versions_2_1_5.html" data-menu-target="versions_2_1_5">2.1.5</a><ul><li><a class="page-menu-link" href="versions_2_1_5.html#autoid_277" data-menu-target="autoid_277">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_1_4.html" data-menu-target="versions_2_1_4">2.1.4</a><ul><li><a class="page-menu-link" href="versions_2_1_4.html#autoid_278" data-menu-target="autoid_278">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_1_3.html" data-menu-target="versions_2_1_3">2.1.3</a><ul><li><a class="page-menu-link" href="versions_2_1_3.html#autoid_279" data-menu-target="autoid_279">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_1_3.html#autoid_280" data-menu-target="autoid_280">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_1_2.html" data-menu-target="versions_2_1_2">2.1.2</a><ul><li><a class="page-menu-link" href="versions_2_1_2.html#autoid_281" data-menu-target="autoid_281">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="versions_2_1_2.html#autoid_282" data-menu-target="autoid_282">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_1_1.html" data-menu-target="versions_2_1_1">2.1.1</a><ul><li><a class="page-menu-link" href="versions_2_1_1.html#autoid_283" data-menu-target="autoid_283">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="versions_2_1_1.html#autoid_284" data-menu-target="autoid_284">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_1.html" data-menu-target="versions_2_1">2.1</a><ul><li><a class="page-menu-link" href="versions_2_1.html#autoid_285" data-menu-target="autoid_285">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="versions_2_1.html#autoid_286" data-menu-target="autoid_286">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_1.html#autoid_287" data-menu-target="autoid_287">Other changes</a></li><li><a class="page-menu-link" href="versions_2_1.html#autoid_288" data-menu-target="autoid_288">Differences between the RC1 and final release</a></li></ul></li><li><a class="page-menu-link" href="versions_2_01.html" data-menu-target="versions_2_01">2.01</a></li><li><a class="page-menu-link" href="versions_2_0.html" data-menu-target="versions_2_0">2.0</a><ul><li><a class="page-menu-link" href="versions_2_0.html#autoid_289" data-menu-target="autoid_289">Bugfixes</a></li><li><a class="page-menu-link" href="versions_2_0.html#autoid_290" data-menu-target="autoid_290">Changes to the Template language</a></li><li><a class="page-menu-link" href="versions_2_0.html#autoid_291" data-menu-target="autoid_291">Changes to the API</a></li><li><a class="page-menu-link" href="versions_2_0.html#autoid_292" data-menu-target="autoid_292">Miscellany</a></li></ul></li><li><a class="page-menu-link" href="versions_2_0RC3.html" data-menu-target="versions_2_0RC3">2.0 RC3</a><ul><li><a class="page-menu-link" href="versions_2_0RC3.html#autoid_293" data-menu-target="autoid_293">Bug Fixes</a></li><li><a class="page-menu-link" href="versions_2_0RC3.html#autoid_294" data-menu-target="autoid_294">Changes to the Template Language</a></li><li><a class="page-menu-link" href="versions_2_0RC3.html#autoid_295" data-menu-target="autoid_295">API changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_0RC2.html" data-menu-target="versions_2_0RC2">2.0 RC2</a><ul><li><a class="page-menu-link" href="versions_2_0RC2.html#autoid_296" data-menu-target="autoid_296">Changes to Template Language</a></li><li><a class="page-menu-link" href="versions_2_0RC2.html#autoid_297" data-menu-target="autoid_297">API Changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_0RC1.html" data-menu-target="versions_2_0RC1">2.0 RC1</a><ul><li><a class="page-menu-link" href="versions_2_0RC1.html#autoid_298" data-menu-target="autoid_298">Support for Numerical operations, both arithmetic and
boolean, as well as numerical ranges.</a></li><li><a class="page-menu-link" href="versions_2_0RC1.html#autoid_299" data-menu-target="autoid_299">API Changes</a></li><li><a class="page-menu-link" href="versions_2_0RC1.html#autoid_300" data-menu-target="autoid_300">Syntactical Miscellany</a></li></ul></li></ul></li><li><a class="page-menu-link" href="app_install.html" data-menu-target="app_install">Installing FreeMarker</a></li><li><a class="page-menu-link" href="app_legal.html" data-menu-target="app_legal">Legal</a><ul><li><a class="page-menu-link" href="app_license.html" data-menu-target="app_license">License</a></li><li><a class="page-menu-link" href="app_eccn.html" data-menu-target="app_eccn">Export Control</a></li></ul></li></ul></li><li><a class="page-menu-link" href="gloss.html" data-menu-target="gloss">Glossary</a></li><li><a class="page-menu-link" href="alphaidx.html" data-menu-target="alphaidx">Alphabetical Index</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><span class="paging-arrow disabled previous"><span>Previous</span></span><a class="paging-arrow next" href="dgui.html"><span>Next</span></a></div></div></div></div> </div>
</div>
<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="https://freemarker.apache.org/">What is FreeMarker?</a></li><li><a href="https://freemarker.apache.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="app_faq.html">FAQ</a></li><li><a itemprop="license" href="app_license.html">License</a></li><li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy policy</a></li></ul></div><div class="column"><h3 class="column-header">Often used / Reference</h3><ul><li><a href="https://try.freemarker.apache.org/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li><li><a href="api/freemarker/core/Configurable.html#setSetting-java.lang.String-java.lang.String-">Configuration settings</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href="https://github.com/apache/freemarker">Github project page</a></li><li><a href="https://issues.apache.org/jira/projects/FREEMARKER">Report a bug</a></li><li><a href="https://freemarker.apache.org/report-security-vulnerabilities.html">Report security vulnerability</a></li><li><a href="https://stackoverflow.com/questions/ask?tags=freemarker">Get help on StackOverflow</a></li><li><a href="https://twitter.com/freemarker">Announcements on Twitter</a></li><li><a href="https://freemarker.apache.org/mailing-lists.html">Discuss on mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/apache/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="https://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
Last generated:
<time itemprop="dateModified" datetime="2024-02-12T20:34:04Z" title="Monday, February 12, 2024 at 8:34:04 PM Greenwich Mean Time">2024-02-12 20:34:04 GMT</time>, for Freemarker 2.3.32 </p>
<p class="copyright">
© <span itemprop="copyrightYear">1999</span>–2024
<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="https://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p>
</div></div></div></body>
</html>