Futurama Logo

Welcome to the Futurama Support Site

The Futurama Support Site is the website where you can find Futurama and Futurama Vision documentation. If you have any questions about the support pages or if you want to provide us feedback please send us an e-mail.




Index Futurama Intermediate Control Output (FICO)
Previous  |  Next

 1      About Futurama
 1.1        Version information
 1.2        Getting Started
 1.2.1          Futurama Website
 1.2.1.1            Behavior of Futurama regarding TimeOuts, Login and Logoff
 1.2.1.2            Replacing an existing Futurama Session
 1.2.2          Futurama Webservice
 1.2.2.1            warmUpDocuments
 1.2.3          Futurama Export
 1.3        Overview - Futurama Modules
 1.3.1          Overview - Futurama Accounts
 1.3.2          Overview - Futurama Server
 1.3.3          Overview - Futurama Monitor
 1.3.4          Overview - Futurama Insight
 1.3.5          Overview - Futurama Console
 1.3.6          Overview - Futurama Webservice
 1.4        Loadbalancing Futurama applications
 1.4.1          Getting the most out of Futurama Web using the Load-Balancer
 1.4.2          Application Request Routing
 1.5        Text management and Multi-language
 2      Installation – Configuration – Testing
 2.1        Installation - Futurama Website Edition
 2.1.1          Installation Futurama HTML
 2.1.2          Installation Futurama Monitor
 2.1.3          Installation Futurama Insight
 2.1.4          Installation Futurama Accounts
 2.1.5          Installation SAML2LoadBalancer
 2.2        Installation - Futurama Export Edition
 2.2.1          Installation Futurama Console
 2.2.2          Installation Futurama Server
 2.3        Installation - Futurama Webservice Edition
 2.3.1          Installation Futurama Webservice
 2.4        Installation Futurama Editor
 2.5        Configuration
 2.5.1          Configuration - Cache
 2.5.2          Configuration - Calculation
 2.5.3          Configuration - Debug
 2.5.4          Configuration - File manager
 2.5.5          Configuration - Fileproviders
 2.5.6          Configuration - Format
 2.5.7          Configuration - History
 2.5.8          Configuration - Identity Provider
 2.5.9          Configuration - Log
 2.5.10           Configuration - Mail
 2.5.11           Configuration - Mapping
 2.5.12           Configuration - Monitor
 2.5.13           Configuration - PlugIns
 2.5.14           Configuration - Rendering
 2.5.15           Configuration - ScenarioRecording
 2.5.16           Configuration - Security
 2.5.17           Configuration - Server
 2.5.18           Configuration - Vision
 2.5.19           Configuration - WebAPI
 2.6        Logging
 2.7        Troubleshooting
 2.8        Security - hardening
 3      Updating and file compatibility
 3.1        Updating Futurama - Compatibility behavior
 3.2        Converting Futurama documents
 3.3        12819 - DataTable file updates
 3.4        12889 - DataTable file updates
 3.5        Conversion web.config to .NET Framework 4
 3.6        Deprecated conversion formulas
 4      Futurama Editor - How to
 4.1        At first glance
 4.2        Developing in the Futurama Editor
 4.2.1          Working with objects
 4.2.2          Evaluating objects
 4.2.3          Finding objects
 4.3        Transferring objects
 4.4        Testing objects
 4.5        Validating objects
 4.6        Troubleshooting objects
 4.7        Advanced/special functionality
 4.8        Checking the layout of objects
 5      Futurama - Formulas
 5.1        Futurama Formulas - Date and time
 5.1.1          Date
 5.1.2          Day
 5.1.3          Days360
 5.1.4          Days360Excel
 5.1.5          DaysInMonth
 5.1.6          DaysInPeriod
 5.1.7          Min
 5.1.8          Max
 5.1.9          Month
 5.1.10           Now
 5.1.11           WeekDay
 5.1.12           Year
 5.2        Futurama Formulas - Math
 5.2.1          Abs
 5.2.2          Add
 5.2.3          Divide
 5.2.4          Floor
 5.2.5          Ln
 5.2.6          Log
 5.2.7          Log10
 5.2.8          Mod
 5.2.9          Multiply
 5.2.10           Pi
 5.2.11           Power
 5.2.12           Rand
 5.2.13           Round
 5.2.14           RoundDown
 5.2.15           RoundUp
 5.2.16           SquareRoot
 5.2.17           Subtract
 5.3        Futurama Formulas - Statistical
 5.3.1          AverageDeviation
 5.3.2          Beta
 5.3.3          Binomial
 5.3.4          Covariance
 5.3.5          Factorial
 5.3.6          Gamma
 5.3.7          GeometricMean
 5.3.8          Lognormal
 5.3.9          Max
 5.3.10           Median
 5.3.11           Min
 5.3.12           Normal
 5.3.13           StandardDeviation
 5.3.14           Uniform
 5.3.15           Variance
 5.4        Futurama Formulas - Text
 5.4.1          CalculateBase64Hashcode
 5.4.2          CalculateXmlHashcode
 5.4.3          Concatenate
 5.4.4          ConcatenateBase64
 5.4.5          ContainsText
 5.4.6          Convert.CSV.2.XML
 5.4.7          ConvertFromBase64
 5.4.8          ConvertToBase64
 5.4.9          ConvertXml
 5.4.10           DecodeURL
 5.4.11           DecryptXml
 5.4.12           EncodeURL
 5.4.13           EncryptXml
 5.4.14           Find
 5.4.15           HashBase64EncodedFile
 5.4.16           HashBase64EncodedFileWithBase64
 5.4.17           HashText
 5.4.18           HashTextWithBase64
 5.4.19           Left
 5.4.20           Len
 5.4.21           Linefeed
 5.4.22           Lower
 5.4.23           Mid
 5.4.24           Proper
 5.4.25           ReadConfigKey
 5.4.26           ReadDirectoryNames
 5.4.27           ReadFile
 5.4.28           ReadFileAsBase64
 5.4.29           ReadFileNames
 5.4.30           ReadFileWithEncoding
 5.4.31           ReadXPathScalar
 5.4.32           ReadXPathVector
 5.4.33           Repeat
 5.4.34           Right
 5.4.35           Substitute
 5.4.36           Trim
 5.4.37           TrimLeft
 5.4.38           TrimRight
 5.4.39           Upper
 5.4.40           ValidatePattern
 5.4.41           XsdMessages
 5.5        Futurama Formulas - Logical
 5.5.1          And
 5.5.2          IsEmpty
 5.5.3          If
 5.5.4          IsEqual
 5.5.5          IsEven
 5.5.6          IsGreater
 5.5.7          IsGreaterEqual
 5.5.8          IsIBANChecksumValid
 5.5.9          IsLess
 5.5.10           IsLessEqual
 5.5.11           IsMemberOfGroup
 5.5.12           IsNotEqual
 5.5.13           IsOdd
 5.5.14           IsValidXml
 5.5.15           Not
 5.5.16           Or
 5.5.17           ValidateNPR
 5.6        Futurama Formulas - Table
 5.6.1          FindNextRow
 5.6.2          FindPreviousRow
 5.6.3          FindRow
 5.6.4          Sort
 5.6.5          VLookUp
 5.7        Futurama Formulas - Document
 5.7.1          CountErrors
 5.7.2          GetPathToDataFiles
 5.7.3          GetPortNumber
 5.7.4          GetRelativePathToDataFiles
 5.7.5          GetSessionID
 5.7.6          IsLicenceAvailable
 5.7.7          ReadError
 5.7.8          ReadIdentityProviderResult
 5.7.9          ReadRequestIP
 5.7.10           ReadRequestParameter
 5.7.11           ReadUserAgent
 5.7.12           ReadVersionNumber
 5.7.13           SessionTimeOut
 5.7.14           URL
 5.7.15           UserName
 5.8        Futurama Formulas - Conversion
 5.8.1          Convert.Excel.to.XML
 5.8.2          ConvertJSONtoXml
 5.8.3          ConvertTextToDate
 5.8.4          ConvertTextToNumber
 5.8.5          ConvertToBoolean
 5.8.6          ConvertToDouble
 5.8.7          ConvertToLong
 5.8.8          ConvertToString
 5.8.9          FormatDate
 5.8.10           FormatNumber
 5.8.11           Value
 5.9        Futurama Formulas - Matrix
 5.9.1          AddMatrices
 5.9.2          AddScalarToMatrix
 5.9.3          Cumulative
 5.9.4          CumulativeProductMatrix
 5.9.5          Distinct
 5.9.6          DivideMatrices
 5.9.7          DivideMatrixScalar
 5.9.8          DivideScalarMatrix
 5.9.9          Exponent
 5.9.10           First
 5.9.11           Floor
 5.9.12           If
 5.9.13           Index
 5.9.14           Inverse
 5.9.15           IsEqual
 5.9.16           IsGreater
 5.9.17           IsGreaterEqual
 5.9.18           IsNotEqual
 5.9.19           IsLess
 5.9.20           IsLessEqual
 5.9.21           Join
 5.9.22           Last
 5.9.23           Length
 5.9.24           MatrixProduct
 5.9.25           Max
 5.9.26           MaxScalarMatrix
 5.9.27           Mean
 5.9.28           Mid
 5.9.29           Min
 5.9.30           MinScalarMatrix
 5.9.31           MultiplyMatrices
 5.9.32           MultiplyMatrixVector
 5.9.33           MultiplyScalarMatrix
 5.9.34           Percentile
 5.9.35           PowerMatrix
 5.9.36           PowerMatrixScalar
 5.9.37           PowerScalarMatrix
 5.9.38           ReadMatrixFromXml
 5.9.39           Repeat
 5.9.40           Replace
 5.9.41           Reshape
 5.9.42           ReverseCumulativeProductMatrix
 5.9.43           ReverseMatrix
 5.9.44           Size
 5.9.45           Split
 5.9.46           SquareRootMatrix
 5.9.47           Step
 5.9.48           SubtractMatrices
 5.9.49           SubtractMatrixScalar
 5.9.50           SubtractScalarMatrix
 5.9.51           Sum
 5.9.52           Transpose
 5.9.53           UnitMatrix
 5.9.54           Vector
 5.10         Creating custom formulas in Futurama
 6      Futurama - Objects
 6.1        Action
 6.2        Aggregation
 6.3        Button
 6.4        ChangeValue
 6.5        CheckBox
 6.6        ClearCache
 6.7        DatabaseField
 6.8        DatabaseView
 6.9        DataTable
 6.10         DateBox
 6.11         DocConverter
 6.12         Document
 6.13         Download
 6.14         DropDownList
 6.15         EmailConverter
 6.16         ExcelConverter
 6.17         FileSaver
 6.18         FileUploader
 6.19         Fixed
 6.20         Formula
 6.21         GraphConverter
 6.22         HTMLInclude
 6.23         InterfacesNode
 6.24         LogMessage
 6.25         Navigator
 6.26         Node
 6.27         RadioButton
 6.28         RadioGroup
 6.29         Range
 6.30         Reference
 6.31         SubDocument
 6.32         TextBox
 6.33         UserTable
 6.34         UserVariable
 6.35         WebLabel
 6.36         WebListBox
 6.37         WebPage
 6.38         WebPanel
 6.39         WebReference
 6.39.1           WebReference - WCF Configuration
 6.40         WebService
 6.41         WebSlider
 6.42         WordConverter
 6.43         XmlBuilder
 6.44         XmlConverter
 6.45         XmlField
 6.46         XmlNode
 7      Futurama - Vision References
 7.1        Data
 7.1.1          ReadData
 7.1.2          WriteMessage
 7.1.3          GetPersonIdentifiers
 7.1.4          CreatePerson
 7.2        DataStore
 7.2.1          DeleteDataItem
 7.2.2          DeleteDataItemHierarchy
 7.2.3          DeleteDataItems
 7.2.4          GetDataItem
 7.2.5          GetDataItemHierarchy
 7.2.6          GetDataItems
 7.2.7          StoreData
 7.3        Accounts
 7.3.1          Activate Account
 7.3.2          Change Account
 7.3.3          Create Account
 7.3.4          GetQuestion
 7.3.5          GetQuestions
 7.3.6          Login
 7.3.7          ReadData
 7.3.8          ReinitializeAccount
 7.4        General
 7.4.1          TestConnection
 8      Futurama Vision
 8.1        Installation Futurama Vision
 8.1.1          Installation Futurama Vision Management Site
 8.1.2          Installation or Upgrade of the Futurama Vision Database
 8.2        Futurama Vision Management Site
 8.2.1          Futurama Vision Management Site - Admin
 8.2.2          Futurama Vision Management Site – Security
 8.2.3          Futurama Vision Management Site – Skinning
 8.2.4          Importing data into Futurama Vision
 8.2.4.1            Importing data by webservice
 8.2.4.2            Importing data from a Zip-file
 8.2.4.3            Importing data with Futurama Vision Batch
 8.2.4.4            Futurama Vision Webservice Security
 8.2.5          Further processing of data into Futurama Vision
 8.3        Futurama Vision File manager
 8.4        Activity overview
 8.5        Storing data in Vision from a Futurama application
 8.6        Futurama Vision – Data
 8.7        Futurama Accounts - Management Site
 8.7.1          Futurama Accounts - Table in Vision Database
 8.8        Futurama Server - Management Site
 8.8.1          Special Futurama Server Jobs
 8.9        Futurama Register - Management Site
 8.9.1          Configuration - Futurama Register
 8.10         Retrieving AppEvents from Futurama Vision
 8.11         Adding CustomPages to Vision
 9      Futurama Intermediate Control Output (FICO)
 9.1        FICO example - Change/Add HTML headers
 9.2        FICO example - Change Graph
 9.3        HTML5 Template
 10       Futurama Web API
 10.1         Postbacks of Futurama webcontrols
 10.2         Retrieving Resources using Web API
 10.3         WebAPI Session management
 11       Tutorials - Overview
 11.1         Tutorials - Examples and Downloads
 11.2         Beginners
 11.2.1           Creating formulas with Futurama
 11.2.1.1             Exercise 1: Pythagorean Theorem (Easy)
 11.2.1.2             Exercise 2: Newspaper stall (Medium)
 11.2.1.3             Exercise 3: Recursive functions (Difficult)
 11.2.1.4             Exercise 4: Leap Year (Difficult)
 11.2.1.5             Exercise 5: The Guessing Game I (Medium)
 11.2.2           Creating a Website Application
 11.2.2.1             Exercise 1: Creating a Website (Easy)
 11.2.3           Styling your website with CSS
 11.2.3.1             Exercise 1: Adding CSS (Easy)
 11.2.4           Adding interactivity to your website
 11.2.4.1             Exercise 1: Summation (Easy)
 11.2.4.2             Exercise 2: The Guessing Game II (Medium)
 11.2.4.3             Exercise 3: Nationality (Medium)
 11.2.4.4             Exercise 4: Nationality - RepeatTarget (Medium)
 11.2.4.5             Exercise 5: Reversed Guessing (Difficult)
 11.2.5           Working with Tables
 11.2.5.1             Exercise 1: Average (Easy)
 11.2.5.2             Exercise 2: Boundary values (Difficult)
 11.2.5.3             Exercise 3: Standard Deviation (Medium)
 11.2.6           Reading and processing XML-data in Futurama
 11.2.6.1             Exercise 1: Shares (Medium)
 11.2.7           Adding Graphs in Futurama
 11.2.7.1             Exercise 1: World Population (Easy)
 11.2.8           Working with Actions in Futurama
 11.2.8.1             Exercise 1: Changing Colors (Easy)
 11.2.8.2             Exercise 2: On and Off (Medium)
 11.2.8.3             Exercise 3: The ChangeValue object (Difficult)
 11.2.8.4             Exercise 4: The Guessing Game III (Medium)
 11.2.8.5             Exercise 5: CheckBox (Medium)
 11.2.9           Multiple Pages and Navigation
 11.2.10            Using XSLT to display data
 11.2.10.1              Exercise 1: Overview Summation (Easy)
 11.2.10.2              Exercise 2: Persons (Medium)
 11.2.10.3              Exercise 3: Leap Year Overview (Difficult)
 11.2.11            Webservices in Futurama
 11.2.11.1              Exercise 1: Example (Easy)
 11.2.12            Creating a Webservice Application
 11.2.12.1              Exercise 1: Add (Easy)
 11.2.12.2              Exercise 2: Webservice Nationality (Medium)
 11.2.13            Creating a Console Application
 11.2.13.1              Exercise 1: Adding extra fields (Easy)
 11.2.14            Generating Documents
 11.2.14.1              Exercise 1: Tax Rate (Medium)
 11.2.14.2              Exercise 2: Tax Rates Table (Difficult)
 11.3         Advanced
 11.3.1           Responsive Design
 11.3.1.1             Exercise 1: Orientation
 11.3.1.2             Exercise 2: Target different screen sizes
 11.4         Older Tutorials (Futurama Version 3.2)
 11.4.1           Futurama Editor Tutorial 1: The first sum
 11.4.2           Futurama Editor Tutorial 2: An annuity
 11.4.3           Futurama Editor Tutorial 3: Working with tables
 11.4.4           Futurama Editor Tutorial 4: Modelling a DB pension plan
 11.4.5           Futurama Editor Tutorial 5: Working with XML
 11.4.6           Futurama Web Tutorial 1: Hello world
 11.4.7           Futurama Web Tutorial 2: Buttons and Actions
 11.4.8           Futurama Web Tutorial 3: Textboxes
 11.4.9           Futurama Web Tutorial 4: DropdownLists
 12       Miscellaneous
 12.1         Responsive website
 12.2         Reducing memory usage for XmlNodes and XmlFields
 12.3         Explaining caching for websites and webservices
 12.4         Certificates - basic information
 12.5         Performance XML operations
 12.6         Creating XSD files and using them in combination with Futurama
 13       Templates
 14       Safe2Save WebAPI Sample
View  |  Print  |  PDF

451 documents found.


Futurama Intermediate Control Output (FICO)

Developer
Futurama-Website
Futurama-HTML
WebAPI

Edition: Futurama Website

Module: Futurama HTML

User: Developer

Prerequisites

-

Introduction

Introduction of Futurama Intermediate Control Output, developed to customize the HTML output of Futurama.

Introduction

In the Futurama Editor a developer can create webpages, using the suitable output objects. These output objects are rendered to HTML. See the support page of each of the output objects to see how each of these objects are rendered. Up to Futurama Version 5.3.0 the way Futurama renders the HTML pages is completely defined within Futurama and cannot be adjusted by the Futurama developer. From Futurama Version 5.3.0 it is possible to add an extra processing step in order to change the HTML that default is rendered by Futurama. This extra processing step is called FICO, which is short for Futurama Intermediate Control Ouput. At this page FICO is explained.

Futurama HTML lifecycle

In order to understand the way Futurama creates the HTML that is shown in the user’s web-browser, see the next steps. Starting point is a web-application created in the Futurama Editor by a Futurama Developer. This web-application is created by using the different Futurama output objects. Mentioned below the steps that Futurama takes to interpret this definition and translate this to the HTML to be rendered:

  1. First step is the rendering of the webpage and all of the output objects (web controls) to a markup language called FICO (Futurama Intermediate Control Output), which is a certain format of XML;
  2. Step two is the transformation of this FICO XML to HTML using an XSLT-file. Default the file xhtml1.0.xsl is used which is part of the site release code (to be used when installing/updating the Futurama HTML code). At his point it is possible to use another XSLT-file in order to customize the HTML. See this support page in order to understand how can be configured to use another XSLT-file then the default. When an alternative XSLT-file is defined, Futurama will use this file to convert the FICO to HTML;
  3. The resulting HTML is sent to the browser, where the end-user sees the resulting webpage.   

In the situation you want to create an alternative XSLT to change the HTML rendered it is important to know what in step 2 the FICO XML is that is automatically generated by Futurama. Knowing this structure, it is possible to create an XSLT-file in order to define your custom HTML. See the next paragraph to see how this FICO XML can be retrieved and what is the method to write your own XSLT.

Structure FICO XML

In the previous paragraph the concept of the FICO XML is introduced. The FICO XML has a generic structure containing both the web controls to be transformed to HTML and a couple of extra parameters which allows differentiation during the transformation process. An example of the FICO XML is:

  <RenderInput xmlns="http://www.actuit.nl/futurama/render/2015/08">
	<FICO>
		<WebPage id="id2" xmlns="http://www.actuit.nl/futurama/fico/2015/06">
			<WebLabel id="id7" cssClass="labelClass">
				<Text>Hello World!</Text>
			</WebLabel>
		</WebPage>
	</FICO>
	<Folder>test</Folder>
	<MetaTags />
	<Scripts>
		<Script>
			<File>Scripts/jquery-1.4.1.min.js</File>
			<Type>text/javascript</Type>
		</Script>
		<Script>
			<File>Scripts/FuturamaScripts.js</File>
			<Type>text/javascript</Type>
		</Script>
	</Scripts>
	<UserAgent>Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0</UserAgent>
</RenderInput>

Within the RenderInput element the next information is available:

  • FICO:  this contains the FICO XML that needs to be transformed;
  • Folder: this is the name of the Futurama application folder. This allows the creation of a template that only has to be applied to that specific application;
  • MetaTags: the metatags Futurama default generates;
  • Scripts: the scripts Futurama default uses.
  • UserAgent (From Futurama 6.0): This text is supplied by the user’s browser, and allows render customizations to be done specific to a browser.

With this input there are two transformations you can perform. The first is a simple transformation of the contained FICO to HTML. This is the default behavior, but can also be forced by setting an XSLT parameter with name “retrievalmode” and value “html”.

The second transformation retrieves a RenderOutput element, which has the following fields:

  • DocType: This is the document type, and specifies which version of HTML is to be expected.
  • MetaTag: This contains a list of MetaTags that can include new metatags
  • Scripts: This contains a list of script tags that can include javascript files.
  • UserAgent (From Futurama 6.0): This text is supplied by the user’s browser, and allows render customizations to be done specific to a browser.

For a detailed explanation about the XML adjustments that are needed see this page: Change/Add HTML headers with FICO

Creating customized XSLT

Although completely possible, writing a new XSLT-file would be very complex and overly time consuming, as developers mostly want to change a single element of the transformed output. For this reason it is recommended to extend the existing XSLT, and override parts of this template to ones own specification. Below an example is shown how to change the HTML of a weblabel. First is shown how to retrieve the FICO XML, and then is explained how to create an XSLT-file to change the HTML.

Capturing FICO output in the Log file

During the FICO translation procedure, the FICO XML can be seen in a logfile. Follow the next steps to see this XML:

  1. enable the logging (see for configuration this page) as well as the debug messages;
  2. open your web-application in a browser;
  3. open the logfile;
  4. check the Debug message ‘input for render XSLT’;
  5. see the input for the render XSLT by unescaping the value. 

Creating an extension XSL file

First create an empty extension XSLT file called for example "extension.xsl". If this is already done previously go to the next step. Make sure it is filled with the following content:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:fut="http://www.actuit.nl/futurama/fico/2015/06" 
xmlns:ren="http://www.actuit.nl/futurama/render/2015/08"
exclude-result-prefixes="fut ren">
	
	<xsl:import href="xhtml1.0.xsl"/>
	
	<xsl:output method="xml" indent="no" omit-xml-declaration="yes" />
	
	<!--Render all other elements according to import-->
	<xsl:template match="/">
		<xsl:apply-imports/>
	</xsl:template>
</xsl:stylesheet>

This new file must be placed in the root of the Futurama Web application, and set-up in the rendering configuration section.

Change the extension XSL file

As an example suppose a WebLabel is defined with a CssClass ‘labelClass’ and a Text value ‘Hello world!’. The resulting FICO XML of this WebLabel looks like:

<WebLabel id="id7" cssClass="labelClass">
	<Text>Hello World!</Text>
</WebLabel>

Now the XSLT-file can be changed in order to customize the HTML for this weblabel. Open the default xhtml1.0.xsl and search for WebLabel. The XSL template found in this file that applies to this WebLabel looks as follows:

<xsl:template match="fut:WebLabel">
	<span>
		<!--id-->
		<xsl:attribute name="id">
			<xsl:value-of select="@id" />
		</xsl:attribute>
		<!--CssClass-->
		<xsl:call-template name="cssClass"/>

		<!--Tooltip-->
		<xsl:call-template name="toolTip" />

		<!--Value-->
		<xsl:value-of select="fut:Text/text()"/>
	</span>
</xsl:template> 

Which in turn generates the following XHTML result:

<span id="id7" class="labelClass">Hello World!</span>

In order to change the way this translation is done, a copy of the XSL template can be placed in the Extension.xsl file, and by changing the <span> and </span> by <label> and </label>, a different HTML format is chosen, and the result would look like this:

<label id="id7" class="labelClass">Hello World!</label>

Prevention of XSS attacks

When creating your own HTML from FICO code, it is important to keep an eye on the possibilities of XSS attacks. For instance, if you choose to render html attributes with single-quotes instead of double-quotes, and the user enters the text [‘ onclick=’alert(“you have been hacked”);] a popup would be shown. In this example the problem is harmless, but we will always advise to use double-quotes for HTML attributes! For more XSS tips, please view the Output Encoding Rules Summary.

Advanced use – postbacks

When the HTML of  webcontrols is changed it is important to keep in mind that this changes can effect information that is posted back to the server. See the page Postbacks of Futurama webcontrols for more information how Futurama postbacks work.

What can be changed?

The alternative XSLT-file can be used to change the HTML. See below which parts of the final HTML can be changed which this XSLT-file:

  • Metatags (see for an example this page);
  • (Java)scripts (see for an example this page);
  • DocType (see for an example this page);
  • Web controls (see for an example of the WebLabel the previous paragraph ‘Creating customized XSLT’);
  • Graph (see for an example this page).

Changing the behavior of FICO rendering


There are some cases when changing the XSL file isn't enough to achieve a desired method of HTML output. It is possible to change the way some aspects of the FICO render process is done. This is done by specifying a "RenderOptions" element within the XSL transformation file. This allows the following changes in the FICO output:

  • ChartRenderMode: Setting this property lets the GraphConverter object to provide its data in different ways. The possible values are as follows:
    • DataXml: This will let the Graphconverter provide an XML element containing the data about its content, namely the Series and Points that will depict the chart. This can be useful when creating a customized chart object as shown in this sample. Charts rendered this way are rendered clientside and will therefore not be visible in serverside reports.
    • MicrosoftChart (default): This lets the Graphconverter provide a element containing a string with HTML code, that can be copied to the output within the transformation XSL file. This is the default behavior, and contains an image which links to chart.aspx, which will provide the browser with the visual image. This option renders the charts serverside making them also show in server side reports.
    • DataXmlPlusMicrosoftChart: This option provides flexibility by allowing customized charts alongside with default charts. This option has a slight impact on performance.
    • MicrosoftChartDataURI: This mimics the behavior of the 'MicrosoftChart' option, but the image doesn't link to chart.aspx, but its source contains a base64 dataURI containing the binary data of the entire image. For more information, view the wikipedia entry.
  • EncodeOutput: This is a boolean field intended for WebAPI usage, indicating whether the the output of the XSL transformation can be considered valid XML, or whether it should be provided as an encoded string. The default value is 'true'.
    An example for changing this field is as follows: When the JSON variant of WebAPI is used, and the FICO code should be passed through to the consumer of the WebAPI webservice. In this case the transformation XSL can contain a simple 'xsl:copy-of' statetement pushing the raw FICO to the output of the transformation. When the EncodeOutput option is set to 'false', all the FICO elements will be provided as Javascript objects, instead of a string of XML data.
  • RenderTelerikControls: This is a boolean field that is set to "true" by default. When this is set to 'false', then the FICO for WebSlider and DateBox will not contain any prerendered HTML code, but their configured properties. This allows a user to create their own (HTML)rendering of the WebSlider and DateBox

Example

To configure the RenderOptions, the following section must be added/altered within the transformation XSL file:

<xsl:template  match="/ren:RenderInput"> 
	<xsl:choose> 
		<!--include other possible retrievalModes here-->   
		<xsl:when test="$retrievalMode = 'options'"> 
			<RenderOptions xmlns="http://www.actuit.nl/futurama/render/2015/08"> 
				<ChartRenderMode>{DataXml/MicrosoftChart/MicrosoftChartDataURI}</ChartRenderMode> 
				<EncodeOutput>{true/false}</EncodeOutput> 
				<RenderTelerikControls>{true/false}</RenderTelerikControls>            
			</RenderOptions> 
		</xsl:when> 
	</xsl:choose> 
</xsl:template>

Related Topics

- Futurama Web API: This document explains the Futurama Web API architecture.

Feedback

If you have any questions about this subject or if you want to provide us feedback please send us an e-mail.

Updated: 2018-10-08


Previous  |  Next