ColdFusion Markup Language - CFML

ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine.

Multiple commercial and open source implementations of CFML engines are available, including Adobe ColdFusion, New Atlanta BlueDragon (who makes both a Java-based and a .NET-based version), Railo, and Open BlueDragon as well as other CFML server engines.

In its simplest form, like many other web scripting languages CFML augments standard HTML files with database commands, conditional operators, high-level formatting functions, and other elements to produce web applications. CFML also includes numerous other constructs including ColdFusion Components (CFCs), CFML's version of objects, that allow for separation of business logic from presentation.

CFML can be written using either tags or CFScript, which is an ECMA script style language.

The pages in a CFML application include the server-side CFML tags and functions in addition to HTML tags, and modern CFML applications also tend to have CFCs that are accessed by the CFML pages for executing business logic. When a web browser requests a page in a ColdFusion application, it is automatically pre-processed by the ColdFusion application server.

CFML can also be used to generate other languages, aside from HTML, such as XML, JavaScript, CSS, and so on.

Despite the name, CFML is not a markup language. It is also not SGML, since certain core CFML features prevent it from complying.

The CFML engine is configured in such a way that certain file extensions on the server (.cfm, .cfc) are handed off to the CFML engine for processing. In the case of the Java-based engines this is accomplished via Java servlets. The CFML engine only processes CFML tags and functions; it returns text outside of CFML tags and functions to the web server unchanged.

ColdFusion was originally created by the Allaire Corporation, originally located in Minnesota but later moving to Cambridge, MA and finally Newton, MA. Allaire was acquired by Macromedia in 2001, thus Allaire Cold Fusion became Macromedia Cold Fusion (the space was removed from the product name with the release of ColdFusion version 4). Adobe acquired Macromedia in 2005 and is still actively developing ColdFusion.


CFML tags have a similar format to HTML tags. They are enclosed in angle brackets (< and >) and generally have zero or more named attributes, though some tags (e.g. cfset, cfif) contain an expression rather than attributes. Many CFML tags have bodies; that is, they have beginning and end tags with text to be processed between them. For example:


   #value# Bob!


Other tags, such as cfset and cfftp, never have bodies; all the required information goes between the beginning (<) character and the ending (>) character in the form of tag attributes (name/value pairs), as in the example below. If it is legal for tags not to have a body, it is syntactically acceptable to leave them unclosed as in the first example, though many CFML developers choose to self-close tags as in the second example to (arguably) make the code more legible.

<cfset value = "Hello">

<cfset value = "Hello" />

Even if the tag can have a body, including a body may not be necessary in some instances because the attributes specify all the required information. In these cases, as with the second example above, the end tag (and hence, the tag body) may be omitted and the tag may be self-closing as in the following example:

<cfexecute name="C:\\winNT\\System32\\netstat.exe" arguments="-e" outputfile="C:\\Temp\\out.txt" timeout="1" />

Various tags offer the ability to type-check input parameters (e.g. cffunction, cfparam, cfqueryparam) if the programmer declares their type specifically. This functionality is used with cfqueryparam to secure web applications and databases from hackers and malicious web requests such as SQL injection.

Built-in Tags

Nearly 100 tags and many more functions make up the heart of the CFML language. The following lists CFML tags by their function or purpose.

  • Application framework
  • Communications
  • Control
    • Flow-control
    • Database manipulation
    • Exception handling
  • Data output
  • Debugging
  • Display management
  • Extensibility
  • File management
  • form
  • Internet protocol
  • Page processing
  • Security
  • Variable manipulation
  • Other tags (cfimage, cfregistry etc.)

Custom Tags

CFML allows language extensions in the form of custom tags, which are tags created by the developer that are not part of the CFML language itself. Custom tags are regular CFML files which are intended to be invoked as tags, although it is possible to treat a template as both a custom tag and a regular template. Custom tags are written in CFML and are typically invoked by prefixing the custom tag's file name with cf_, although there are other ways to invoke custom tags.

If a template is invoked as a custom tag, the attributes used to invoke that tag are available within the tag in an attributes scope and the variables for the calling page are accessible via the caller scope.

For example, if writing a custom tag to perform addition, taking two attributes and adding them together, the tag would be an addition.cfm file which could look like this:

<cfset caller.addition = attributes.first + attributes.second />

<cfexit method="exitTag" />

Assuming the tag is in the same directory as the file (or in a pre-defined customtags directory), it can be invoked thus:

<cf_addition first="1" second="2">

CFX tags are custom tags which are developed using Java or C++, and are prefixed with cfx_ just like cf_. Java and C++ tags are added to the CFML runtime environment using the CFML engine's administrator or by editing configuration files.

On some CFML engines JSP tags can also be included in CFML pages using the <cfimport> tag.


ColdFusion Markup Language includes a set of functions that you use to perform logical and arithmetic operations and manipulate data.




(ArraySort, ArrayAppend, ArrayDeleteAt...)


(URLEncodedFormat, ToString...)

Date and time

(LsTimeFormat, DateAdd, DateDiff...)


(IsDefined, IIF...)

Display and formatting

(CJustify, NumberFormat...)

Dynamic evaluation

(DE, Evaluate...)


(CreateObject, ToScript...)


(ImageRotate, ImageAddBorder...)

International functions

(SetLocale, GetTimeZoneInfo...)


(FindOneOf, ListSetAt...)


(Randomize, Sqr...)

Other functions

(WriteOutput, GetBaseTemplatePath...)


(QueryAddColumn, QuerySetCell...)


(Encrypt, Decrypt...)


(Reverse, HTMLCodeFormat...)


(StructKeyExists, StructDelete...)


(GetTickCount, GetTempFile...)


(XMLParse, GetSOAPResponse...)


ColdFusion Components (CFCs)

CFCs provide some (not all) of the typical features and functionality that are provided by object-oriented (OOP) languages. To create a CFC:

Create a file with a .CFC extension (this distinguishes CFCs from ColdFusion templates, which have a .CFM extension).Use four tags to create the components, define their functions and arguments, and return a value. <cfcomponent>: Defines a CFC<cffunction>: Defines the functions (methods) within a CFC<cfargument>: Defines the arguments (parameters) that a function accepts<cfreturn>: Returns a value or result from a function

CFCs are plain CFML. Within a CFC any CFML tag, function, custom tag, other components, etc. may be used.

CFCs can be used in various ways. If a method contained in a CFC simply needs to be invoked, the <cfinvoke> tag will create an instance of the CFC, invoke the desired method, and then destroy the instance of the CFC. <cfinvoke> takes the name of the component (minus the .cfc extension) and the method to execute. To access any returned data, the RETURNVARIABLE attribute provides the name of a variable to contain whatever the function returns. CFCs are created using four tags, saved as .CFC files, and invoked using the <cfinvoke> tag.

In the example below, component temperature.cfc has a method FtoC which converts temperature from Fahrenheit to Celsius. The test.cfm template invokes the method and converts 212 degrees Fahrenheit and outputs the result.

<!--- temperature.cfc --->


  <cffunction name="FtoC" access="public" returntype="numeric">

    <cfargument name="fahrenheit" required="yes" type="numeric" />

    <cfset answer= (fahrenheit - 32)*100/180 />

    <cfreturn answer />



<!--- test.cfm --->

<cfset fDegrees = 212 />

<cfinvoke component="temperature" method="FtoC" returnvariable="result">

  <cfinvokeargument name="fahrenheit" value="#fDegrees#" />


<cfoutput>#fDegrees#&deg;F = #result#&deg;C</cfoutput> <br />

CFCs may also be instantiated as objects. Assuming a CFC file called Person.cfc, an instance of this CFC would be instantiated as follows:

<cfset person = CreateObject("component", "Person") />

ColdFusion Markup Language CFC, also form the basis of the ability to create web services in CFML. A CFC is created in the usual way, and the attribute access="remote" added to any function within the CFC will make that function available to be called as a SOAP-based web service. The CFML engine auto-generates a WSDL and creates all the necessary stubs for the web service to function.


Google Translate Widget by Infofru

Author Site Reviewresults