blob: 522b661d1f5bb93b1a29f3895c00c406c0d9adc5 [file] [log] [blame]
<!doctype html>
<!-- Generated by FreeMarker/Docgen from DocBook -->
<html lang="en" class="page-type-section">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>outputformat - 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="outputformat">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="https://freemarker.apache.org/docs/ref_directive_outputformat.html">
<link rel="canonical" href="https://freemarker.apache.org/docs/ref_directive_outputformat.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"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_outputformat.html"><span itemprop="name">outputformat</span></a></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 = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","outputformat"];</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"><a class="paging-arrow previous" href="ref_directive_nt.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_setting.html"><span>Next</span></a></div><div class="title-wrapper">
<h1 class="content-header header-section1" id="ref_directive_outputformat" itemprop="headline">outputformat</h1>
</div></div><div class="page-menu">
<div class="page-menu-title">Page Contents</div>
<ul><li><a class="page-menu-link" href="#autoid_118" data-menu-target="autoid_118">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_119" data-menu-target="autoid_119">Description</a></li></ul> </div><a name="ref.directive.outputformat"></a>
<h2 class="content-header header-section2" id="autoid_118">Synopsis</h2>
<pre class="metaTemplate"><code class="inline-code">&lt;#outputformat <em class="code-color">formatName</em>&gt;
<em class="code-color">...</em>
&lt;/#outputFormat&gt;</code>
</pre>
<p>Where:</p>
<ul>
<li>
<code class="inline-code"><em class="code-color">formatName</em></code>:
A string constant; can&#39;t contain runtime expressions! This is
the name of the output format, like <code class="inline-code">&quot;HTML&quot;</code>,
<code class="inline-code">&quot;XML&quot;</code>, etc.; see the <a href="dgui_misc_autoescaping.html#topic.predefinedOutputFormats">table of the predefined
output formats here</a>. The referred output format must be
known by the <code class="inline-code">Configuration</code>, or else a <a href="gloss.html#gloss.parseTimeError">parse-time error</a> will
occur. The name can also be like
<code class="inline-code">&quot;<em class="code-color">outerFormatName</em>{<em class="code-color">innerFormatName</em>}&quot;</code>,
or
<code class="inline-code">&quot;{<em class="code-color">innerFormatName</em>}&quot;</code>;
<a href="#topic.combinedOutputFormats">see combined output
formats later</a>.
</li>
</ul>
<p>Camel case name variant: <code class="inline-code">outputFormat</code> <div class="callout note">
<strong class="callout-label">Note:</strong>
<p><code class="inline-code">outputformat</code> exists since FreeMarker
2.3.24.</p>
</div>
</p>
<h2 class="content-header header-section2" id="autoid_119">Description</h2>
<p>Sets the <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output format</a>
to the specified one, inside the nested block. At the end of the
block, the earlier output format is restored.</p>
<p>This directive only has effect on the section that is
literally (as in the text editor) inside the nested bock, not on the
parts that are called/included from there.</p>
<p>Example:</p>
<div class="code-block role-template">
<div class="code-block-label">Template</div><pre class="code-block-body">&lt;#ftl output_format=&quot;XML&quot;&gt;
XML escaping: ${&quot;&amp;{}&quot;}
&lt;#outputformat &quot;RTF&quot;&gt;
RTF escaping: ${&quot;&amp;{}&quot;}
&lt;/#outputformat&gt;
&lt;#outputformat &quot;plainText&quot;&gt;
No escsaping: ${&quot;&amp;{}&quot;}
&lt;/#outputformat&gt;
XML escsaping: ${&quot;&amp;{}&quot;}</pre> </div>
<div class="code-block role-output">
<div class="code-block-label">Output</div><pre class="code-block-body">XML escsaping: &amp;amp;{}
RTF escaping: &amp;\{\}
No escsaping: &amp;{}
XML escsaping: &amp;amp;{}</pre> </div>
<h3 class="content-header header-simplesect" id="topic.combinedOutputFormats">Combined (nested) output formats</h3>
<p>When <code class="inline-code">outputformat</code>-s are nested into each
other, normally, only the innermost output format will count. For
example:</p>
<div class="code-block role-template">
<div class="code-block-label">Template</div><pre class="code-block-body">&lt;#ftl output_format=&quot;XML&quot;&gt;
${&quot;&#39;{}&quot;}
&lt;#outputformat &quot;HTML&quot;&gt;
${&quot;&#39;{}&quot;}
&lt;#outputformat &quot;RTF&quot;&gt;
${&quot;&#39;{}&quot;}
&lt;/#outputformat&gt;
&lt;/#outputformat&gt;</pre> </div>
<div class="code-block role-output">
<div class="code-block-label">Output</div><pre class="code-block-body">&amp;apos;{}
&amp;#39;{}
&#39;\{\}</pre> </div>
<p>But sometimes you want all enclosing output format escaping
to be applied at once. In that case the 2nd
<code class="inline-code">${<em class="code-color">...</em>}</code> above should
be escaped with <code class="inline-code">&quot;HTML&quot;</code> and then with
<code class="inline-code">&quot;XML&quot;</code>, and the 3rd
<code class="inline-code">${<em class="code-color">...</em>}</code> should be
escaped with <code class="inline-code">&quot;RTF&quot;</code> and then with
<code class="inline-code">&quot;HTML&quot;</code> and then with <code class="inline-code">&quot;XML&quot;</code>.
These are called combined output formats, and can be referred by
names like <code class="inline-code">&quot;XML{HTML}&quot;</code> and
<code class="inline-code">&quot;XML{HTML{RTF}}&quot;</code>, respectively. We could use
these names in the earlier two <code class="inline-code">outputformat</code>
calls, however, there&#39;s a shorthand where you inherit the part
outside the <code class="inline-code">{<em class="code-color">...</em>}</code>
from the enclosing output format:</p>
<div class="code-block role-template">
<div class="code-block-label">Template</div><pre class="code-block-body">&lt;#ftl outputFormat=&quot;XML&quot;&gt;
${&quot;&#39;{}&quot;}
&lt;#outputFormat &quot;{HTML}&quot;&gt;&lt;#-- Same as &quot;XML{HTML}&quot; --&gt;
${&quot;&#39;{}&quot;}
&lt;#outputFormat &#39;{RTF}&#39;&gt;&lt;#-- Same as &quot;XML{HTML{RTF}}&quot; --&gt;
${&quot;&#39;{}&quot;}
&lt;/#outputFormat&gt;
&lt;/#outputFormat&gt;</pre> </div>
<div class="code-block role-output">
<div class="code-block-label">Output</div><pre class="code-block-body">&amp;apos;{}
&amp;amp;#39;{}
&amp;amp;#39;\{\}</pre> </div>
<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_nt.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_setting.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>