-
Processors
- AttributeRollingWindow
- AttributesToCSV
- AttributesToJSON
- CalculateRecordStats
- CaptureChangeMySQL
- CompressContent
- ConnectWebSocket
- ConsumeAMQP
- ConsumeAzureEventHub
- ConsumeBoxEnterpriseEvents
- ConsumeBoxEvents
- ConsumeElasticsearch
- ConsumeGCPubSub
- ConsumeIMAP
- ConsumeJMS
- ConsumeKafka
- ConsumeKinesis
- ConsumeKinesisStream
- ConsumeMQTT
- ConsumePOP3
- ConsumeSlack
- ConsumeTwitter
- ConsumeWindowsEventLog
- ControlRate
- ConvertCharacterSet
- ConvertRecord
- CopyAzureBlobStorage_v12
- CopyS3Object
- CountText
- CreateBoxFileMetadataInstance
- CreateBoxMetadataTemplate
- CryptographicHashContent
- DebugFlow
- DecryptContentAge
- DecryptContentPGP
- DeduplicateRecord
- DeleteAzureBlobStorage_v12
- DeleteAzureDataLakeStorage
- DeleteBoxFileMetadataInstance
- DeleteByQueryElasticsearch
- DeleteDynamoDB
- DeleteFile
- DeleteGCSObject
- DeleteGridFS
- DeleteMongo
- DeleteS3Object
- DeleteSFTP
- DeleteSQS
- DetectDuplicate
- DistributeLoad
- DuplicateFlowFile
- EncodeContent
- EncryptContentAge
- EncryptContentPGP
- EnforceOrder
- EvaluateJsonPath
- EvaluateXPath
- EvaluateXQuery
- ExecuteGroovyScript
- ExecuteProcess
- ExecuteScript
- ExecuteSQL
- ExecuteSQLRecord
- ExecuteStreamCommand
- ExtractAvroMetadata
- ExtractEmailAttachments
- ExtractEmailHeaders
- ExtractGrok
- ExtractHL7Attributes
- ExtractRecordSchema
- ExtractStructuredBoxFileMetadata
- ExtractText
- FetchAzureBlobStorage_v12
- FetchAzureDataLakeStorage
- FetchBoxFile
- FetchBoxFileInfo
- FetchBoxFileMetadataInstance
- FetchBoxFileRepresentation
- FetchDistributedMapCache
- FetchDropbox
- FetchFile
- FetchFTP
- FetchGCSObject
- FetchGoogleDrive
- FetchGridFS
- FetchS3Object
- FetchSFTP
- FetchSmb
- FilterAttribute
- FlattenJson
- ForkEnrichment
- ForkRecord
- GenerateFlowFile
- GenerateRecord
- GenerateTableFetch
- GeoEnrichIP
- GeoEnrichIPRecord
- GeohashRecord
- GetAwsPollyJobStatus
- GetAwsTextractJobStatus
- GetAwsTranscribeJobStatus
- GetAwsTranslateJobStatus
- GetAzureEventHub
- GetAzureQueueStorage_v12
- GetBoxFileCollaborators
- GetBoxGroupMembers
- GetDynamoDB
- GetElasticsearch
- GetFile
- GetFileResource
- GetFTP
- GetGcpVisionAnnotateFilesOperationStatus
- GetGcpVisionAnnotateImagesOperationStatus
- GetHubSpot
- GetMongo
- GetMongoRecord
- GetS3ObjectMetadata
- GetS3ObjectTags
- GetSFTP
- GetShopify
- GetSmbFile
- GetSNMP
- GetSplunk
- GetSQS
- GetWorkdayReport
- GetZendesk
- HandleHttpRequest
- HandleHttpResponse
- IdentifyMimeType
- InvokeHTTP
- InvokeScriptedProcessor
- ISPEnrichIP
- JoinEnrichment
- JoltTransformJSON
- JoltTransformRecord
- JSLTTransformJSON
- JsonQueryElasticsearch
- ListAzureBlobStorage_v12
- ListAzureDataLakeStorage
- ListBoxFile
- ListBoxFileInfo
- ListBoxFileMetadataInstances
- ListBoxFileMetadataTemplates
- ListDatabaseTables
- ListDropbox
- ListenFTP
- ListenHTTP
- ListenOTLP
- ListenSlack
- ListenSyslog
- ListenTCP
- ListenTrapSNMP
- ListenUDP
- ListenUDPRecord
- ListenWebSocket
- ListFile
- ListFTP
- ListGCSBucket
- ListGoogleDrive
- ListS3
- ListSFTP
- ListSmb
- LogAttribute
- LogMessage
- LookupAttribute
- LookupRecord
- MergeContent
- MergeRecord
- ModifyBytes
- ModifyCompression
- MonitorActivity
- MoveAzureDataLakeStorage
- Notify
- PackageFlowFile
- PaginatedJsonQueryElasticsearch
- ParseEvtx
- ParseNetflowv5
- ParseSyslog
- ParseSyslog5424
- PartitionRecord
- PublishAMQP
- PublishGCPubSub
- PublishJMS
- PublishKafka
- PublishMQTT
- PublishSlack
- PutAzureBlobStorage_v12
- PutAzureCosmosDBRecord
- PutAzureDataExplorer
- PutAzureDataLakeStorage
- PutAzureEventHub
- PutAzureQueueStorage_v12
- PutBigQuery
- PutBoxFile
- PutCloudWatchMetric
- PutDatabaseRecord
- PutDistributedMapCache
- PutDropbox
- PutDynamoDB
- PutDynamoDBRecord
- PutElasticsearchJson
- PutElasticsearchRecord
- PutEmail
- PutFile
- PutFTP
- PutGCSObject
- PutGoogleDrive
- PutGridFS
- PutIcebergRecord
- PutKinesisFirehose
- PutKinesisStream
- PutLambda
- PutMongo
- PutMongoBulkOperations
- PutMongoRecord
- PutRecord
- PutRedisHashRecord
- PutS3Object
- PutSalesforceObject
- PutSFTP
- PutSmbFile
- PutSNS
- PutSplunk
- PutSplunkHTTP
- PutSQL
- PutSQS
- PutSyslog
- PutTCP
- PutUDP
- PutWebSocket
- PutZendeskTicket
- QueryAirtableTable
- QueryAzureDataExplorer
- QueryDatabaseTable
- QueryDatabaseTableRecord
- QueryRecord
- QuerySalesforceObject
- QuerySplunkIndexingStatus
- RemoveRecordField
- RenameRecordField
- ReplaceText
- ReplaceTextWithMapping
- RetryFlowFile
- RouteHL7
- RouteOnAttribute
- RouteOnContent
- RouteText
- RunMongoAggregation
- SampleRecord
- ScanAttribute
- ScanContent
- ScriptedFilterRecord
- ScriptedPartitionRecord
- ScriptedTransformRecord
- ScriptedValidateRecord
- SearchElasticsearch
- SegmentContent
- SendTrapSNMP
- SetSNMP
- SignContentPGP
- SplitAvro
- SplitContent
- SplitExcel
- SplitJson
- SplitPCAP
- SplitRecord
- SplitText
- SplitXml
- StartAwsPollyJob
- StartAwsTextractJob
- StartAwsTranscribeJob
- StartAwsTranslateJob
- StartGcpVisionAnnotateFilesOperation
- StartGcpVisionAnnotateImagesOperation
- TagS3Object
- TailFile
- TransformXml
- UnpackContent
- UpdateAttribute
- UpdateBoxFileMetadataInstance
- UpdateByQueryElasticsearch
- UpdateCounter
- UpdateDatabaseTable
- UpdateGauge
- UpdateRecord
- ValidateCsv
- ValidateJson
- ValidateRecord
- ValidateXml
- VerifyContentMAC
- VerifyContentPGP
- Wait
-
Controller Services
- ADLSCredentialsControllerService
- ADLSCredentialsControllerServiceLookup
- ADLSIcebergFileIOProvider
- AmazonGlueEncodedSchemaReferenceReader
- AmazonGlueSchemaRegistry
- AmazonMSKConnectionService
- ApicurioSchemaRegistry
- AvroReader
- AvroRecordSetWriter
- AvroSchemaRegistry
- AWSCredentialsProviderControllerService
- AwsRdsIamDatabasePasswordProvider
- AzureBlobStorageFileResourceService
- AzureCosmosDBClientService
- AzureDataLakeStorageFileResourceService
- AzureEventHubRecordSink
- AzureStorageCredentialsControllerService_v12
- AzureStorageCredentialsControllerServiceLookup_v12
- CEFReader
- ConfluentEncodedSchemaReferenceReader
- ConfluentEncodedSchemaReferenceWriter
- ConfluentProtobufMessageNameResolver
- ConfluentSchemaRegistry
- CSVReader
- CSVRecordLookupService
- CSVRecordSetWriter
- DatabaseRecordLookupService
- DatabaseRecordSink
- DatabaseTableSchemaRegistry
- DBCPConnectionPool
- DBCPConnectionPoolLookup
- DeveloperBoxClientService
- DistributedMapCacheLookupService
- ElasticSearchClientServiceImpl
- ElasticSearchLookupService
- ElasticSearchStringLookupService
- EmailRecordSink
- EmbeddedHazelcastCacheManager
- ExcelReader
- ExternalHazelcastCacheManager
- FreeFormTextRecordSetWriter
- GCPCredentialsControllerService
- GCSFileResourceService
- GCSIcebergFileIOProvider
- GrokReader
- HazelcastMapCacheClient
- HikariCPConnectionPool
- HttpRecordSink
- IPLookupService
- JettyWebSocketClient
- JettyWebSocketServer
- JMSConnectionFactoryProvider
- JndiJmsConnectionFactoryProvider
- JsonConfigBasedBoxClientService
- JsonPathReader
- JsonRecordSetWriter
- JsonTreeReader
- JWTBearerOAuth2AccessTokenProvider
- Kafka3ConnectionService
- KerberosKeytabUserService
- KerberosPasswordUserService
- KerberosTicketCacheUserService
- LoggingRecordSink
- MapCacheClientService
- MapCacheServer
- MongoDBControllerService
- MongoDBLookupService
- ParquetIcebergWriter
- PEMEncodedSSLContextProvider
- PropertiesFileLookupService
- ProtobufReader
- ReaderLookup
- RecordSetWriterLookup
- RecordSinkServiceLookup
- RedisConnectionPoolService
- RedisDistributedMapCacheClientService
- RESTIcebergCatalog
- RestLookupService
- S3FileResourceService
- S3IcebergFileIOProvider
- ScriptedLookupService
- ScriptedReader
- ScriptedRecordSetWriter
- ScriptedRecordSink
- SetCacheClientService
- SetCacheServer
- SimpleCsvFileLookupService
- SimpleDatabaseLookupService
- SimpleKeyValueLookupService
- SimpleRedisDistributedMapCacheClientService
- SimpleScriptedLookupService
- SiteToSiteReportingRecordSink
- SlackRecordSink
- SmbjClientProviderService
- StandardAzureCredentialsControllerService
- StandardAzureIdentityFederationTokenProvider
- StandardDatabaseDialectService
- StandardDropboxCredentialService
- StandardFileResourceService
- StandardHashiCorpVaultClientService
- StandardHttpContextMap
- StandardJsonSchemaRegistry
- StandardKustoIngestService
- StandardKustoQueryService
- StandardOauth2AccessTokenProvider
- StandardPGPPrivateKeyService
- StandardPGPPublicKeyService
- StandardPrivateKeyService
- StandardProtobufReader
- StandardProxyConfigurationService
- StandardRestrictedSSLContextService
- StandardS3EncryptionService
- StandardSSLContextService
- StandardWebClientServiceProvider
- Syslog5424Reader
- SyslogReader
- UDPEventRecordSink
- VolatileSchemaCache
- WindowsEventLogReader
- XMLFileLookupService
- XMLReader
- XMLRecordSetWriter
- YamlTreeReader
- ZendeskRecordSink
TransformXml 2.9.0
- Bundle
- org.apache.nifi | nifi-standard-nar
- Description
- Applies the provided XSLT file to the FlowFile XML payload. A new FlowFile is created with transformed content and is routed to the 'success' relationship. If the XSL transform fails, the original FlowFile is routed to the 'failure' relationship
- Tags
- transform, xml, xslt
- Input Requirement
- REQUIRED
- Supports Sensitive Dynamic Properties
- false
-
Additional Details for TransformXml 2.9.0
TransformXml
XSLT Transform with Parameters
XSLT parameters are placeholders within an XSLT stylesheet that allow external values to be passed into the transformation process at runtime. Parameters are accessible within a stylesheet as normal variables, using the
$namesyntax, provided they are declared using a top-levelxsl:paramelement. If there is no such declaration, the supplied parameter value is silently ignored.XSLT with Parameter Defined
Consider the following XML
<?xml version="1.0" encoding="UTF-8"?> <data> <item>Some data</item> </data>and XSLT stylesheet
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="customParam" select="'From XSLT'"/> <xsl:template match="/"> <root> <message> Value Selected: <xsl:value-of select="$customParam"/> </message> </root> </xsl:template> </xsl:stylesheet>If the following parameter name
customParamand parameter valueFrom NIFIpair are added as a dynamic property, then the output would be<?xml version="1.0" encoding="UTF-8"?> <root> <message> Value Selected: From NIFI</message> </root>Note the value of the
customParamparameter becameFrom NIFIeven though the declaredxsl:paramelement had a default value ofFrom XSLT.XSLT without Parameter Defined
If the XSLT stylesheet does not have a top-level
xsl:paramelement declared<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <root> <message> Value Selected: </message> </root> </xsl:template> </xsl:stylesheet>even if the following parameter name
customParamand parameter valueFrom NIFIpair are added as a dynamic property, they are ignored and the output would be<?xml version="1.0" encoding="UTF-8"?> <root> <message> Value Selected: </message> </root>In a case where the parameter is not declared in a
xsl:paramelement, but attempted to be used in an XSLT stylesheet,<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <root> <message> Value Selected: <xsl:value-of select="$customParam"/> </message> </root> </xsl:template> </xsl:stylesheet>even if the following parameter name
customParamand parameter valueFrom NIFIpair are added as a dynamic property, the transform will fail with an error message containing textVariable $customParam has not been declared.XSLT Parameter Defined with Required Type
Starting in XSLT 2.0, an
asattribute was added to parameters allowing for specifying the type of parameter. The following are some of the more common types supported and what valid values to use for each:Type Name Type Value xs:stringAny string value. xs:booleanA lowercase value of true or false. xs:integerA signed integer value. xs:floatA 32-bit IEEE single-precision floating-point. xs:doubleA 64-bit IEEE single-precision floating-point. xs:dateA date in ISO 8601 format YYYY-MM-DD xs:dateTimeA date time in ISO 8601 format: YYYY-MM-DDThh:mm:ss with optional uses of Z to represent UTC or an offset (e.g. -05:00). xs:timeA time in format HH:mm:ss or HH:mm:ss.SSS with optional uses of Z to represent UTC or an offset (e.g. -05:00). xs:anyURIA valid URI. The following XSLT stylesheet demonstrates the use of specifying types in an XSLT and populating their values with dynamic properties.
Consider the following XSLT stylesheet
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl:param name="stringParam" as="xs:string" select="'From XSLT'"/> <xsl:param name="integerParam" as="xs:integer" select="0"/> <xsl:param name="floatParam" as="xs:float" select="0.0"/> <xsl:param name="doubleParam" as="xs:double" select="0.0"/> <xsl:param name="booleanParam" as="xs:boolean" select="false"/> <xsl:param name="dateParam" as="xs:date" select="xs:date('1970-01-01')"/> <xsl:param name="dateTimeParam" as="xs:dateTime" select="xs:dateTime('1970-01-01T00:00:00')"/> <xsl:param name="timeParam" as="xs:time" select="current-time()"/> <xsl:param name="utcTimeParam" as="xs:time" select="current-time()"/> <xsl:param name="offsetTimeParam" as="xs:time" select="current-time()"/> <xsl:param name="uriParam" as="xs:anyURI"/> <xsl:template match="/"> <report> <message>Param of type xs:string value is <xsl:value-of select="$stringParam"/></message> <message>Param of type xs:integer value is <xsl:value-of select="$integerParam"/></message> <message>Param of type xs:float value is <xsl:value-of select="$floatParam"/></message> <message>Param of type xs:double value is <xsl:value-of select="$doubleParam"/></message> <message>Param of type xs:boolean value is <xsl:value-of select="$booleanParam"/></message> <message>Param of type xs:date value is <xsl:value-of select="$dateParam"/></message> <message>Param of type xs:dateTime value is <xsl:value-of select="$dateTimeParam"/></message> <message>Param of type xs:time value is <xsl:value-of select="$timeParam"/></message> <message>Param of type xs:time UTC value is <xsl:value-of select="$utcTimeParam"/></message> <message>Param of type xs:time offset value is <xsl:value-of select="$offsetTimeParam"/></message> <message>Param of type xs:anyURI <xsl:value-of select="$uriParam"/></message> </report> </xsl:template> </xsl:stylesheet>and the use of the XML from before
<?xml version="1.0" encoding="UTF-8"?> <data> <item>Some data</item> </data>If the following parameter name and parameter value pairs are added as dynamic properties
Parameter Name Parameter Value stringParam From NIFI integerParam 100 floatParam 123.456 doubleParam 12.78e-2 booleanParam true dateParam 2026-01-01 dateTimeParam 2026-01-01T00:00:00 timeParam 12:34:56.789 utcTimeParam 12:34:56Z offsetTimeParam 12:34:56-05:00 uriParam http://from-nifi.com then the resulting XML will be
<?xml version="1.0" encoding="UTF-8"?> <report xmlns:xs="http://www.w3.org/2001/XMLSchema"> <message>Param of type xs:string value is From NIFI</message> <message>Param of type xs:integer value is 100</message> <message>Param of type xs:float value is 123.456</message> <message>Param of type xs:double value is 0.1278</message> <message>Param of type xs:boolean value is true</message> <message>Param of type xs:date value is 2026-01-01</message> <message>Param of type xs:dateTime value is 2026-01-01T00:00:00</message> <message>Param of type xs:time value is 12:34:56.789</message> <message>Param of type xs:time UTC value is 12:34:56Z</message> <message>Param of type xs:time offset value is 12:34:56-05:00</message> <message>Param of type xs:anyURI http://from-nifi.com</message> </report>Please note the “static” attribute added to the
xsl:paramelement in 3.0 does not work with the dynamic properties in NIFI because as implied, static means a parameter value must be known at compile time of the XSLT while the dynamic properties are supplied at run time of the actual transform.
-
Cache Duration
The cache TTL (time-to-live) or how long to keep stylesheets in the cache after last access.
- Display Name
- Cache Duration
- Description
- The cache TTL (time-to-live) or how long to keep stylesheets in the cache after last access.
- API Name
- Cache Duration
- Default Value
- 60 secs
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
-
Cache Size
Maximum number of stylesheets to cache. Zero disables the cache.
- Display Name
- Cache Size
- Description
- Maximum number of stylesheets to cache. Zero disables the cache.
- API Name
- Cache Size
- Default Value
- 10
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
-
Indent
Whether or not to indent the output.
- Display Name
- Indent
- Description
- Whether or not to indent the output.
- API Name
- Indent
- Default Value
- true
- Allowable Values
-
- true
- false
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
-
Secure Processing
Whether or not to mitigate various XML-related attacks like XXE (XML External Entity) attacks.
- Display Name
- Secure Processing
- Description
- Whether or not to mitigate various XML-related attacks like XXE (XML External Entity) attacks.
- API Name
- Secure Processing
- Default Value
- true
- Allowable Values
-
- true
- false
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- true
-
XSLT File Name
Provides the name (including full path) of the XSLT file to apply to the FlowFile XML content.One of the 'XSLT file name' and 'XSLT Lookup' properties must be defined.
- Display Name
- XSLT File Name
- Description
- Provides the name (including full path) of the XSLT file to apply to the FlowFile XML content.One of the 'XSLT file name' and 'XSLT Lookup' properties must be defined.
- API Name
- XSLT File Name
- Expression Language Scope
- Environment variables and FlowFile Attributes
- Sensitive
- false
- Required
- false
-
XSLT Lookup
Controller lookup used to store XSLT definitions. One of the 'XSLT file name' and 'XSLT Lookup' properties must be defined. WARNING: note that the lookup controller service should not be used to store large XSLT files.
- Display Name
- XSLT Lookup
- Description
- Controller lookup used to store XSLT definitions. One of the 'XSLT file name' and 'XSLT Lookup' properties must be defined. WARNING: note that the lookup controller service should not be used to store large XSLT files.
- API Name
- XSLT Lookup
- Service Interface
- org.apache.nifi.lookup.StringLookupService
- Service Implementations
- Expression Language Scope
- Not Supported
- Sensitive
- false
- Required
- false
-
XSLT Lookup Key
Key used to retrieve the XSLT definition from the XSLT lookup controller. This property must be set when using the XSLT controller property.
- Display Name
- XSLT Lookup Key
- Description
- Key used to retrieve the XSLT definition from the XSLT lookup controller. This property must be set when using the XSLT controller property.
- API Name
- XSLT Lookup Key
- Expression Language Scope
- Environment variables and FlowFile Attributes
- Sensitive
- false
- Required
- false
-
An XSLT transform parameter name
These XSLT parameters are passed to the transformer. See additional details for more information.
- Name
- An XSLT transform parameter name
- Description
- These XSLT parameters are passed to the transformer. See additional details for more information.
- Value
- An XSLT transform parameter value
- Expression Language Scope
- FLOWFILE_ATTRIBUTES
| Name | Description |
|---|---|
| failure | If a FlowFile fails processing for any reason (for example, the FlowFile is not valid XML), it will be routed to this relationship |
| success | The FlowFile with transformed content will be routed to this relationship |