FLAT
CouperSevenval TechnologiesDocker ImageGithub
master
master
  • Changelog
  • FLAT
  • Administration
    • Configuration
    • Docker
    • Logging
  • Cookbook
    • Using the Built-in Mocking
    • Performing Additional Checks on JWT Access Tokens
    • Logging Custom Fields
    • Using Environment Variables
    • Handling Errors with an Error Flow
    • File Serving
    • Forwarding a Request to an Upstream API
    • Extracting Common Initialization Flow Tasks
    • Encoding and Decoding JWT
    • Passing Header Fields to the Client
    • How can I pass an arbitrary header field to an upstream system?
    • Performing Additional Checks on JWT Access Tokens
    • Proxying requests to Upstream APIs
    • Increasing the Request Timeout
    • How can I see what the client requested?
    • Using Swagger UI for API Documentation
    • Testing API Requests
    • Testing with Backend Requests
    • Testing Templates
    • Sending POST Requests
    • Processing Upstream Responses
    • Protecting Access using JWT Tokens
  • Reference
    • Configuration
    • Debugging
    • flat CLI
    • Flow
    • Variables
    • OpenAPI / Swagger Integration
    • OpenAPI
      • CORS - Cross-Origin Resource Sharing
    • OpenAPI
      • Differences from Swagger
    • OpenAPI
      • Mocking
    • OpenAPI
      • Routing
    • OpenAPI
      • Security
    • OpenAPI
      • Upstream APIs
    • OpenAPI
      • Validation
    • Flow Actions
      • assert Action
      • auth Action
      • backend-flow Action
      • copy Action
      • debug Action
      • dump Action
      • echo Action
      • error Action
      • eval Action
      • log Action
      • nameshave Action
      • pass-body Action
      • proxy-request Action
      • regex Action
      • request Action
      • requests Action
      • serve Action
      • set-config Action
      • set-env Action
      • set-response-headers Action
      • set-status Action
      • sub-flow Action
      • template Action
      • test-request Action
      • xslt Action
    • Functions
      • apply-codecs()
      • array-reverse()
      • array()
      • base64-decode()
      • base64-encode()
      • body()
      • calc-signature()
      • capitalize-first()
      • content()
      • decrypt-xml()
      • decrypt()
      • encrypt()
      • ends-with()
      • file-exists()
      • fit-document()
      • fit-log()
      • fit-serialize()
      • get-log()
      • has-class()
      • html-parse()
      • join()
      • json-doc()
      • json-parse()
      • json-stringify()
      • json-to-csv()
      • json-to-xml()
      • jwt-decode()
      • jwt-encode()
      • ldap-lookup()
      • ldap-query()
      • lookup()
      • matches()
      • md5()
      • replace()
      • sort()
      • split()
      • tolower()
      • toupper()
      • trim()
      • unixtime()
      • urldecode(), url-decode()
      • urlencode(), url-encode()
      • uuid3() and uuid4()
      • verify-signature()
      • verify-xmldsig()
      • xml-parse()
      • xml-to-json()
    • Templating
      • {{,}}
      • Comment {{// …}}
      • Dot {{.}}
      • Conditional `{{if <condition>}} … {{elseif <condition> }} … {{else}} … {{end}}
      • loop
      • ?? Operator
      • Object XML Notation (OXN)
      • Pair Producer {{: …}}
      • Placeholder
      • Template Variables
      • with
    • Testing
  • Tutorial
Powered by GitBook
On this page
  • Syntax
  • Usage
  • Examples
  • Tips
  • Errors

Was this helpful?

  1. Reference
  2. Flow Actions

xslt Action

Previoustest-request ActionNextFunctions

Last updated 5 years ago

Was this helpful?

The xslt action performs an on DOM content.

Syntax

  • src="..." path to the XSLT file (required)

  • cache="..." controls whether the XSLT compiler cache shall be used (optional, default is true).

    Cache usage depends on the $FLAT_XSLT_USE_CACHE.

  • in="..." to define the input location (optional, default is fit://request/content)

  • out="..." to define the output location (optional, default is fit://request/content)

Usage

The action reads the in content. If the input is no DOM, the action tries to parse the content automatically. The XSLT code is read from the file defined in src. The XSLT is then compiled (or read from the in-memory cache). The transformation generates a new content (usually a DOM), that is written to out.

The <xsl:output> element is important for the action to work. The method may be html and xml that generate a new DOM or text that generates an output string. The encoding and media-type attributes are passed on to the meta data of the FIDJ location. If you process the main content, it will be passed to the client as Content-type header.

The XSLT cache stores a compiled representation of the XSLT stylesheet in the process memory. This is usually recommended, because it avoids re-parsing and re-compiling the same code over and over again. The action uses the modification time of the src file to invalidate the cache. This means that the cache does not consider xsl:include, xsl:import or x:include directives that you may have used to spread your XSLT code over multiple files to determine if a cache entry is still up to date. You may clear the XSLT cache by executing fitadmin maintenance clearcache for your project. Alternatively, you can completely turn off caching if it hinders your development process. Then, if possible, re-enable caching when the site goes in production.

Examples

<xslt src="myXSLT.xsl" />
<xslt src="fit://site/config/myXSLT.xsl" cache="false" />
<xslt src="myXSLT.xsl" in="fit://request/content/test" out="fit://request/content/test" />

A simple HTML copy transformation looks like this:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" />

<!-- your templates here -->
<xsl:template match="div[@class='special']" >
  <div class="very special">
    <div>this is a special tag</div>
    <xsl:apply-templates />
  </div>
</xsl:template>

<xsl:template match="node() | @*">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

Tips

If you rather want to generate a new document with your xslt action than transforming an existing DOM, you can use in="fit://request/empty". This special location always returns <empty/>.

You can clear the XSLT cache with the fitadmin command line tool using the --xslt option:

$ fitadmin maintenance clearcache --xslt myproject

Errors

The following errors are considered fatal and terminate the request:

  • XSLT not given or not found

  • XSLT empty

  • XSLT has syntax or compile errors

  • The in document is not present, empty or no DOM

  • The transformation raises runtime errors

The following errors are considered non-fatal. The will continue, no content will be written to out.

XSL 1.0 Transformation
flow