# Online XSLT tester

Select XSLT processor:
procInfo
Insert your XML:
Insert your XSLT:
Transform result:

## What is XSLT?

XSLT is a language for transforming XML documents into other documents such as XML, HTML and many other.

XSLT 2.0 introduced a host of new features:
- Strong typing and all XSD types
- The ability to define and write own functions
- node-set() - replaces XSLT's 1.0 Result Tree Fragment, creating fully functional tree
- New functions and operators:
- - XPath 2.0
- - String processing and regular expressions
- - Grouping (for-each-group function) - - String processing
- - Sequence type

XSLT 3.0 further improved the formula:
- Streaming tranformations (previously file had to be loaded to memory to be processed)
- Packages - improve the modularity of large stylesheets
- Improved error handling (for example `<xsl:try>`)
- Support for maps and arrays, enabling XSLT to handle JSON as well as XML
- Functions can now be arguments to other (higher-order) functions

## XSLT 1.0, 2.0 & 3.0 functions

[1.0] `xsl:template`
defines a set of rules to be applied to specified node.
`W3C Documentation reference: Defining-Template-Rules`
[1.0] `xsl:apply-templates`
applies a template rule to the current element or to element's child nodes.
`W3C Documentation reference: Applying-Template-Rules`
[1.0] `xsl:apply-imports`
Applies a template rule from an imported style sheet
`W3C Documentation reference: #apply-imports`
[1.0] `xsl:apply-templates`
Applies a template rule to the current element or to the current element's child nodes
`W3C Documentation reference: Applying-Template-Rules`
[1.0] `xsl:call-template`
Calls a named template
`W3C Documentation reference: #named-templates`
[2.0] `xsl:next-match`
overrides another template rule (considers all other template rules of lower import precedence/priority)
`W3C Documentation reference: #element-next-match`
[3.0] `xsl:mode`
Allows properties of a mode to be defined
`W3C Documentation reference: #element-mode`
[3.0] `xsl:override`
Allows using package to override selected components from a used package
`W3C Documentation reference: #element-override`
[3.0] `xsl:package`
Defines a set of stylesheet modules that can be compiled as a unit
`W3C Documentation reference: #element-package`
[3.0] `xsl:accept`
Allows a package to restrict the visibility of components exposed by a package
`W3C Documentation reference: #element-accept`
[3.0] `xsl:global-context-item`
Declares whether a global context item is required, and if so, to declare its required type
`W3C Documentation reference: #element-global-context-item`
[1.0] `xsl:for-each`
Loops through each node in a specified node set
`W3C Documentation reference: #for-each`
[1.0] `xsl:if`
Contains a template that will be applied only if a specified condition is true
`W3C Documentation reference: Conditional-Processing`
[1.0] `xsl:choose`
Used in conjunction with <
`W3C Documentation reference: Conditional-Processing-with-xsl:choose`
[1.0] `xsl:when`
Specifies an action for the <
`W3C Documentation reference: Conditional-Processing-with-xsl:choose`
[1.0] `xsl:otherwise`
Specifies a default action for the <
`W3C Documentation reference: Conditional-Processing-with-xsl:choose`
[2.0] `xsl:for-each-group`
Groups elements and performs operations once for each group
`W3C Documentation reference: #element-for-each-group`
[3.0] `xsl:iterate`
Used to iterate over a sequence, with the option to set parameters for use in the next iteration
`W3C Documentation reference: #element-iterate`
[3.0] `xsl:break`
Causes premature completion before the entire input sequence has been processed
`W3C Documentation reference: #element-break`
[3.0] `xsl:next-iteration`
The contents are a set of xsl:with-param elements defining the values of the iteration parameters to be used on the next iteration
`W3C Documentation reference: #element-next-iteration`
[3.0] `xsl:on-completion`
Defines processing to be carried out when the input sequence is exhausted
`W3C Documentation reference: #element-on-completion`
[3.0] `xsl:fork`
The result of the xsl:fork instruction is the sequence formed by concatenating the results of evaluating each of its contained instructions, in order
`W3C Documentation reference: #element-fork`
[3.0] `xsl:on-empty`
Outputs the enclosed content only if the containing sequence generates no "ordinary" content
`W3C Documentation reference: #element-on-empty`
[3.0] `xsl:on-non-empty`
Outputs the enclosed content only if the containing sequence also generates "ordinary" content
`W3C Documentation reference: #element-on-non-empty`
[3.0] `xsl:try`
Allows recovery from dynamic errors occurring within the expression it wraps
`W3C Documentation reference: #element-try`
[3.0] `xsl:catch`
http://www.w3.org/TR/xslt-30/#element-catchIn conjunction with xsl:try, handles dynamic errors
`W3C Documentation reference: #element-catchIn conjunction with xsl:try, handles dynamic errors`
[3.0] `xsl:context-item`
Used to declare the initial context item for a template
`W3C Documentation reference: #element-context-item`
[1.0] `xsl:attribute`
Adds an attribute
`W3C Documentation reference: #creating-attributes`
[1.0] `xsl:attribute-set`
Defines a named set of attributes
`W3C Documentation reference: #attribute-sets`
[1.0] `xsl:copy`
Creates a copy of the current node (without child nodes and attributes)
`W3C Documentation reference: #copying`
[1.0] `xsl:number`
Determines the integer position of the current node and formats a number
`W3C Documentation reference: #number`
[1.0] `xsl:value-of`
Extracts the value of a selected node
`W3C Documentation reference: #value-of`
[1.0] `xsl:text`
Writes literal text to the output
`W3C Documentation reference: Creating-Text`
[1.0] `xsl:comment`
Creates a comment node in the result tree
`W3C Documentation reference: Creating-Comments`
[1.0] `xsl:processing-instruction`
Writes a processing instruction to the output
`W3C Documentation reference: Creating-Processing-Instructions`
[1.0] `xsl:key`
Declares a named key that can be used in the style sheet with the key() function
`W3C Documentation reference: #key`
[1.0] `xsl:decimal-format`
Defines the characters and symbols to be used when converting numbers into strings, with the format-number() function
`W3C Documentation reference: #format-number`
[1.0] `xsl:preserve-space`
Defines the elements for which white space should be preserved
`W3C Documentation reference: #strip`
[1.0] `xsl:strip-space`
Defines the elements for which white space should be removed
`W3C Documentation reference: #strip`
[1.0] `xsl:sort`
Sorts the output
`W3C Documentation reference: #sorting`
[1.0] `xsl:output`
Defines the format of the output document
`W3C Documentation reference: #output`
[2.0] `xsl:for-each-group`
Sorts given sequence
`W3C Documentation reference: #element-perform-sort`
[2.0] `xsl:result-document`
Creates a final result tree
`W3C Documentation reference: #element-result-document`
[2.0] `xsl:character-map`
Allows a specific character appearing in the final result tree to be substituted by a specified string of characters
`W3C Documentation reference: #element-character-map`
[2.0] `xsl:output-character`
Defines characters and their replacements to be used by character-map
`W3C Documentation reference: #element-character-map`
[3.0] `xsl:merge`
Merges two or more pre-sorted input files
`W3C Documentation reference: #element-merge`
[3.0] `xsl:merge-action`
Defines action to be carried out on each merged group
`W3C Documentation reference: #element-merge-action`
[3.0] `xsl:merge-key`
Used to define the merge keys on which the input sequences are sorted
`W3C Documentation reference: #element-merge-key`
[3.0] `xsl:merge-source`
Describes the input source for an xsl:merge instruction
`W3C Documentation reference: #element-merge-source`
[1.0] `xsl:stylesheet`
Defines the root element of a style sheet
`W3C Documentation reference: #stylesheet-element`
[1.0] `xsl:transform`
Defines the root element of a style sheet
`W3C Documentation reference: #stylesheet-element`
[1.0] `xsl:import`
Imports the contents of one style sheet into another. Note: An imported style sheet has lower precedence than the importing style sheet
`W3C Documentation reference: #import`
[1.0] `xsl:include`
Includes the contents of one style sheet into another. Note: An included style sheet has the same precedence as the including style sheet
`W3C Documentation reference: #include`
[1.0] `xsl:namespace-alias`
Replaces a namespace in the style sheet to a different namespace in the output
`W3C Documentation reference: #literal-result-element`
[1.0] `xsl:element`
Creates an element node in the output document
`W3C Documentation reference: Creating-Elements-with-xsl:element`
[1.0] `xsl:param`
Declares a local or global parameter
`W3C Documentation reference: #variables`
[1.0] `xsl:variable`
Declares a local or global variable
`W3C Documentation reference: #variables`
[1.0] `xsl:with-param`
Defines the value of a parameter to be passed into a template
`W3C Documentation reference: Passing-Parameters-to-Templates`
[1.0] `xsl:copy-of`
Creates a copy of the current node (with child nodes and attributes)
`W3C Documentation reference: #copy-of`
[2.0] `xsl:document`
Creates a new document node
`W3C Documentation reference: #element-document`
[2.0] `xsl:namespace`
Creates a namespace node
`W3C Documentation reference: #element-namespace`
[2.0] `xsl:namespace-alias`
Declares that a literal namespace URI is being used as an alias for a target namespace URI
`W3C Documentation reference: #element-namespace-alias`
[2.0] `xsl:sequence`
Constructs a sequence of nodes and/or atomic values
`W3C Documentation reference: #element-sequence`
[2.0] `xsl:analyze-string`
Identifies substrings that match given regex
`W3C Documentation reference: #element-analyze-string`
[2.0] `xsl:matching-substring`
Used in conjunction with analize-string, returns matching substrings
`W3C Documentation reference: #element-analyze-string`
[2.0] `xsl:non-matching-substring`
Used in conjunction with analize-string, returns substrings that didn't match the regex
`W3C Documentation reference: #element-analyze-string`
[2.0] `xsl:function`
Declares a function that can be called from any XPath expression in the stylesheet
`W3C Documentation reference: #element-function`
[3.0] `xsl:evaluate`
Allows dynamic evaluation of XPath expressions from a string
`W3C Documentation reference: #element-evaluate`
[3.0] `xsl:assert`
Asserts a XPath expression, optionally throwing a dynamic error
`W3C Documentation reference: #element-assert`
[1.0] `xsl:message`
Writes a message to the output (used to report errors)
`W3C Documentation reference: #message`
[1.0] `xsl:fallback`
Specifies an alternate code to run if the processor does not support an XSLT element
`W3C Documentation reference: #fallback`
[3.0] `xsl:map`
Used to construct a new map
`W3C Documentation reference: #element-map`
[3.0] `xsl:map-entry`
Used to construct a singleton map (one key and one value)
`W3C Documentation reference: #element-map-entry`
[3.0] `xsl:expose`
Used to modify the visibility of selected components within a package
`W3C Documentation reference: #element-expose`
[3.0] `xsl:accumulator`
Defines a rule that is to be applied while the document is being sequentially processed
`W3C Documentation reference: #element-accumulator`
[3.0] `xsl:accumulator-rule`
Defines a rule for an xsl:accumulator
`W3C Documentation reference: #element-accumulator-rule`
[3.0] `xsl:source-document`
Initiates streamed or unstreamed processing of a source document
`W3C Documentation reference: #element-source-document`
[3.0] `xsl:use-package`
http://www.w3.org/TR/xslt-30/#element-use-package
`W3C Documentation reference: #element-use-package`
[3.0] `xsl:where-populated`
Allows conditional content construction to be made streamable
`W3C Documentation reference: #element-where-populated`
[3.0] `xsl:accept`
Allows a package to restrict the visibility of components exposed by a package that it uses
`W3C Documentation reference: #element-accept`