540 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			540 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
 | 
						|
<head>
 | 
						|
    <!-- <link rel="stylesheet" href="styles.css"> -->
 | 
						|
    <link rel="stylesheet" href="new_css/r11form.css">
 | 
						|
    <script src="scripts.js"></script>
 | 
						|
</head>
 | 
						|
 | 
						|
<body onload="init();">
 | 
						|
    <div class="container">
 | 
						|
        <div id="tool" class="tool">
 | 
						|
            <div class="tool-context">
 | 
						|
                <div class="headline">
 | 
						|
                    <h1>Online XSLT tester <span class="versionInfo"><span class="version-span">v0.4</span></span></h1>
 | 
						|
                </div>
 | 
						|
                <label for="processors">Select XSLT processor:</label>
 | 
						|
                <select name="processors" id="processors">
 | 
						|
                    <option value="saxon">Saxon</option>
 | 
						|
                    <option value="xalan">Xalan</option>
 | 
						|
                </select>
 | 
						|
                <span id="processorTooltipInfo">procInfo</span><br>
 | 
						|
                <br>
 | 
						|
 | 
						|
                <label for="xmlArea"><b>Insert your XML:</b></label>
 | 
						|
                <textarea id="xmlArea" name="xmlArea" rows="15"
 | 
						|
                    class="textarea-300 bordered-field vertically-resizeable max-width"
 | 
						|
                    onblur="setDefaultContent(this, 'Insert XML here');"
 | 
						|
                    onfocus="clearDefaultContent(this, 'Insert XML here');"></textarea>
 | 
						|
                <br><br>
 | 
						|
 | 
						|
                <label for="transformArea"><b>Insert your XSLT:</b></label>
 | 
						|
                <textarea id="transformArea" name="transformArea" rows="15"
 | 
						|
                    class="textarea-300 bordered-field vertically-resizeable max-width"
 | 
						|
                    onblur="setDefaultContent(this, 'Insert XSLT here');"
 | 
						|
                    onfocus="clearDefaultContent(this, 'Insert XSLT here');"></textarea>
 | 
						|
                <br>
 | 
						|
                <button id="requestButton" class="max-width block-label action-button active"
 | 
						|
                    onclick="performRequest('xsltpost', true, true)">Execute XSLT transform</button>
 | 
						|
                <br><br>
 | 
						|
 | 
						|
                <label for="resultArea"><b>Transform result:<span id="procinfo"></span></b></label>
 | 
						|
                <textarea id="resultArea" name="resultArea" rows="10"
 | 
						|
                    class="textarea-300 bordered-field vertically-resizeable max-width"></textarea>
 | 
						|
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
        <div class="tooltip tooltip-window">
 | 
						|
            <h2>What is XSLT?</h2>
 | 
						|
            <p>XSLT is a language for transforming XML documents into other documents such as XML, HTML and many
 | 
						|
                other.<br></p>
 | 
						|
            <span id="collapsible-lists">
 | 
						|
                <div class="collapsible">
 | 
						|
                    <button class="section-button collapseTrigger" style="border: none" style="border: none">XSLT 1.0 vs
 | 
						|
                        2.0
 | 
						|
                        vs 3.0</button>
 | 
						|
                    <div class="content">
 | 
						|
                        <p><b>XSLT 2.0 introduced a host of new features:</b><br>
 | 
						|
                            - Strong typing and all XSD types<br>
 | 
						|
                            - The ability to define and write own functions<br>
 | 
						|
                            - node-set() - replaces XSLT's 1.0 Result Tree Fragment, creating fully functional tree<br>
 | 
						|
                            - New functions and operators:<br>
 | 
						|
                            - - XPath 2.0<br>
 | 
						|
                            - - String processing and regular expressions<br>
 | 
						|
                            - - Grouping (for-each-group function)
 | 
						|
                            - - String processing<br>
 | 
						|
                            - - Sequence type<br>
 | 
						|
                        </p>
 | 
						|
                        <p><b>XSLT 3.0 further improved the formula:</b><br>
 | 
						|
                            - Streaming tranformations (previously file had to be loaded to memory to be processed)<br>
 | 
						|
                            - Packages - improve the modularity of large stylesheets<br>
 | 
						|
                            - Improved error handling (for example <code><xsl:try></code>)<br>
 | 
						|
                            - Support for maps and arrays, enabling XSLT to handle JSON as well as XML<br>
 | 
						|
                            - Functions can now be arguments to other (higher-order) functions
 | 
						|
                        </p>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
 | 
						|
                <h2><span id="tooltipFunctionInfo">XSLT 1.0, 2.0 & 3.0 functions</span></h2>
 | 
						|
                <div class="collapsible">
 | 
						|
                    <button class="section-button collapseTrigger" style="border: none">Templates</button>
 | 
						|
                    <div class="content">
 | 
						|
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Defining-Template-Rules"
 | 
						|
                            target="_blank"><code><xsl:template></code></a> - defines a set of rules to be
 | 
						|
                        applied to
 | 
						|
                        specified node.<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Applying-Template-Rules"
 | 
						|
                            target="_blank"><code><xsl:apply-templates></code></a> - applies a template rule to
 | 
						|
                        the
 | 
						|
                        current element or to element's child nodes.<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#apply-imports"
 | 
						|
                            target="_blank"><code><xsl:apply-imports></code></a> - Applies a template rule from
 | 
						|
                        an
 | 
						|
                        imported style sheet<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Applying-Template-Rules"
 | 
						|
                            target="_blank"><code><xsl:apply-templates></code></a> - Applies a template rule to
 | 
						|
                        the
 | 
						|
                        current element or to the current element's child nodes<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#named-templates"
 | 
						|
                            target="_blank"><code><xsl:call-template></code></a> - Calls a named template
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-next-match"
 | 
						|
                                target="_blank"><code><xsl:next-match></code></a> - overrides another template
 | 
						|
                            rule
 | 
						|
                            (considers all other template rules of lower import precedence/priority)<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-mode"
 | 
						|
                                target="_blank"><code><xsl:mode></code></a> - Allows properties of a mode to be
 | 
						|
                            defined<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-override"
 | 
						|
                                target="_blank"><code><xsl:override></code></a> - Allows using package to
 | 
						|
                            override
 | 
						|
                            selected components from a used package<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-package"
 | 
						|
                                target="_blank"><code><xsl:package></code></a> - Defines a set of stylesheet
 | 
						|
                            modules
 | 
						|
                            that can be compiled as a unit<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="https://www.w3.org/TR/xslt-30/#element-accept"
 | 
						|
                                target="_blank"><code><xsl:accept></code></a> - Allows a package to restrict the
 | 
						|
                            visibility of components exposed by a package<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a
 | 
						|
                                href="http://www.w3.org/TR/xslt-30/#element-global-context-item"
 | 
						|
                                target="_blank"><code><xsl:global-context-item></code></a> - Declares whether a
 | 
						|
                            global context item is required, and if so, to declare its required type</span>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
                <div class="collapsible">
 | 
						|
                    <button class="section-button collapseTrigger" style="border: none">Repetition and Conditional
 | 
						|
                        processing</button>
 | 
						|
                    <div class="content">
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#for-each"
 | 
						|
                            target="_blank"><code><xsl:for-each></code></a> - Loops through each node in a
 | 
						|
                        specified
 | 
						|
                        node set<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing"
 | 
						|
                            target="_blank"><code><xsl:if></code></a> - Contains a template that will be applied
 | 
						|
                        only if a specified condition is true<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing-with-xsl:choose"
 | 
						|
                            target="_blank"><code><xsl:choose></code></a> - Used in conjunction with <when>
 | 
						|
                        and
 | 
						|
                        <otherwise> to express multiple conditional tests<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing-with-xsl:choose"
 | 
						|
                            target="_blank"><code><xsl:when></code></a> - Specifies an action for the
 | 
						|
                        <choose> element<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing-with-xsl:choose"
 | 
						|
                            target="_blank"><code><xsl:otherwise></code></a> - Specifies a default
 | 
						|
                        action for the <choose> element<br>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-for-each-group"
 | 
						|
                                target="_blank"><code><xsl:for-each-group></code></a> - Groups
 | 
						|
                            elements and performs operations once for each group<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-iterate"
 | 
						|
                                target="_blank"><code><xsl:iterate></code></a> - Used to iterate
 | 
						|
                            over a sequence, with the option to set parameters for use in the next
 | 
						|
                            iteration<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-break"
 | 
						|
                                target="_blank"><code><xsl:break></code></a> - Causes premature
 | 
						|
                            completion before the entire input sequence has been processed<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-next-iteration"
 | 
						|
                                target="_blank"><code><xsl:next-iteration></code></a> - The
 | 
						|
                            contents
 | 
						|
                            are a set of xsl:with-param elements defining the values of the iteration
 | 
						|
                            parameters to be used on the next iteration<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-on-completion"
 | 
						|
                                target="_blank"><code><xsl:on-completion></code></a> - Defines
 | 
						|
                            processing to be carried out when the input sequence is exhausted<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-fork"
 | 
						|
                                target="_blank"><code><xsl:fork></code></a> - The result of the
 | 
						|
                            xsl:fork instruction is the sequence formed by concatenating the results of
 | 
						|
                            evaluating each of its contained instructions, in order<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-on-empty"
 | 
						|
                                target="_blank"><code><xsl:on-empty></code></a> - Outputs the
 | 
						|
                            enclosed content only if the containing sequence generates no "ordinary"
 | 
						|
                            content<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-on-non-empty"
 | 
						|
                                target="_blank"><code><xsl:on-non-empty></code></a> - Outputs the
 | 
						|
                            enclosed content only if the containing sequence also generates "ordinary"
 | 
						|
                            content<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-try"
 | 
						|
                                target="_blank"><code><xsl:try></code></a> - Allows recovery from
 | 
						|
                            dynamic errors occurring within the expression it wraps<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-catch"
 | 
						|
                                target="_blank"><code><xsl:catch></code></a> - In conjunction
 | 
						|
                            with
 | 
						|
                            xsl:try, handles dynamic errors<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-context-item"
 | 
						|
                                target="_blank"><code><xsl:context-item></code></a> - Used to
 | 
						|
                            declare
 | 
						|
                            the initial context item for a template<br></span>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
                <div class="collapsible">
 | 
						|
                    <button class="section-button collapseTrigger" style="border: none">Creating result tree</button>
 | 
						|
                    <div class="content">
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#creating-attributes"
 | 
						|
                            target="_blank"><code><xsl:attribute></code></a> - Adds an attribute<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#attribute-sets"
 | 
						|
                            target="_blank"><code><xsl:attribute-set></code></a> - Defines a named set of
 | 
						|
                        attributes<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#copying"
 | 
						|
                            target="_blank"><code><xsl:copy></code></a> - Creates a copy of the current node
 | 
						|
                        (without
 | 
						|
                        child nodes and attributes)<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#number"
 | 
						|
                            target="_blank"><code><xsl:number></code></a> - Determines the integer position of
 | 
						|
                        the
 | 
						|
                        current node and formats a number<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#value-of"
 | 
						|
                            target="_blank"><code><xsl:value-of></code></a> - Extracts the value of a selected
 | 
						|
                        node<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Text"
 | 
						|
                            target="_blank"><code><xsl:text></code></a> - Writes literal text to the output<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Comments"
 | 
						|
                            target="_blank"><code><xsl:comment></code></a> - Creates a comment node in the result
 | 
						|
                        tree<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Processing-Instructions"
 | 
						|
                            target="_blank"><code><xsl:processing-instruction></code></a> - Writes a processing
 | 
						|
                        instruction to the output<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#key"
 | 
						|
                            target="_blank"><code><xsl:key></code></a> -
 | 
						|
                        Declares a named key that can be used in the
 | 
						|
                        style sheet with the key() function<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#format-number"
 | 
						|
                            target="_blank"><code><xsl:decimal-format></code></a> - Defines the characters and
 | 
						|
                        symbols to be used when converting numbers into strings, with the format-number() function<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#strip"
 | 
						|
                            target="_blank"><code><xsl:preserve-space></code></a> - Defines the elements for
 | 
						|
                        which
 | 
						|
                        white space should be preserved<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#strip"
 | 
						|
                            target="_blank"><code><xsl:strip-space></code></a> - Defines the elements for which
 | 
						|
                        white
 | 
						|
                        space should be removed<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#sorting"
 | 
						|
                            target="_blank"><code><xsl:sort></code></a> - Sorts the output<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#output"
 | 
						|
                            target="_blank"><code><xsl:output></code></a> - Defines the format of the output
 | 
						|
                        document<br>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-perform-sort"
 | 
						|
                                target="_blank"><code><xsl:for-each-group></code></a> - Sorts given
 | 
						|
                            sequence<br></span>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-result-document"
 | 
						|
                                target="_blank"><code><xsl:result-document></code></a> - Creates a final result
 | 
						|
                            tree<br></span>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-character-map"
 | 
						|
                                target="_blank"><code><xsl:character-map></code></a> - Allows a specific
 | 
						|
                            character
 | 
						|
                            appearing in the final result tree to be substituted by a specified string of
 | 
						|
                            characters<br></span>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-character-map"
 | 
						|
                                target="_blank"><code><xsl:output-character></code></a> - Defines characters and
 | 
						|
                            their replacements to be used by character-map<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge"
 | 
						|
                                target="_blank"><code><xsl:merge></code></a> - Merges two or more pre-sorted
 | 
						|
                            input
 | 
						|
                            files<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge-action"
 | 
						|
                                target="_blank"><code><xsl:merge-action></code></a> - Defines action to be
 | 
						|
                            carried
 | 
						|
                            out on each merged group<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge-key"
 | 
						|
                                target="_blank"><code><xsl:merge-key></code></a> - Used to define the merge keys
 | 
						|
                            on
 | 
						|
                            which the input sequences are sorted<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge-source"
 | 
						|
                                target="_blank"><code><xsl:merge-source></code></a> - Describes the input source
 | 
						|
                            for
 | 
						|
                            an xsl:merge instruction<br></span>
 | 
						|
                        <!-- <span name="collapse2">[v3.0] <a href="  " target="_blank"><code><  ></code></a> - <br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="  " target="_blank"><code><  ></code></a> - <br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="  " target="_blank"><code><  ></code></a> - <br></span> -->
 | 
						|
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
                <div class="collapsible">
 | 
						|
                    <button class="section-button collapseTrigger" style="border: none">Stylesheet structure</button>
 | 
						|
                    <div class="content">
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#stylesheet-element"
 | 
						|
                            target="_blank"><code><xsl:stylesheet></code></a> - Defines the root element of a
 | 
						|
                        style
 | 
						|
                        sheet<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#stylesheet-element"
 | 
						|
                            target="_blank"><code><xsl:transform></code></a> - Defines the root element of a
 | 
						|
                        style
 | 
						|
                        sheet<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#import"
 | 
						|
                            target="_blank"><code><xsl:import></code></a> - Imports the contents of one style
 | 
						|
                        sheet
 | 
						|
                        into another. Note: An imported style sheet has lower precedence than the importing style
 | 
						|
                        sheet<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#include"
 | 
						|
                            target="_blank"><code><xsl:include></code></a> - Includes the contents of one style
 | 
						|
                        sheet
 | 
						|
                        into another. Note: An included style sheet has the same precedence as the including style
 | 
						|
                        sheet<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#literal-result-element"
 | 
						|
                            target="_blank"><code><xsl:namespace-alias></code></a> - Replaces a namespace in the
 | 
						|
                        style sheet to a different namespace in the output<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Elements-with-xsl:element"
 | 
						|
                            target="_blank"><code><xsl:element></code></a> - Creates an element node in the
 | 
						|
                        output
 | 
						|
                        document<br>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
                <div class="collapsible">
 | 
						|
                    <button class="section-button collapseTrigger" style="border: none">Variables and
 | 
						|
                        Parameters</button>
 | 
						|
                    <div class="content">
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#variables"
 | 
						|
                            target="_blank"><code><xsl:param></code></a> - Declares a local or global
 | 
						|
                        parameter<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#variables"
 | 
						|
                            target="_blank"><code><xsl:variable></code></a> - Declares a local or global
 | 
						|
                        variable<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Passing-Parameters-to-Templates"
 | 
						|
                            target="_blank"><code><xsl:with-param></code></a> - Defines the value of a parameter
 | 
						|
                        to
 | 
						|
                        be passed into a template<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#copy-of"
 | 
						|
                            target="_blank"><code><xsl:copy-of></code></a> - Creates a copy of the current node
 | 
						|
                        (with
 | 
						|
                        child nodes and attributes)<br>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-document"
 | 
						|
                                target="_blank"><code><xsl:document></code></a> - Creates a new document
 | 
						|
                            node<br></span>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-namespace"
 | 
						|
                                target="_blank"><code><xsl:namespace></code></a> - Creates a namespace
 | 
						|
                            node<br></span>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-namespace-alias"
 | 
						|
                                target="_blank"><code><xsl:namespace-alias></code></a> - Declares that a literal
 | 
						|
                            namespace URI is being used as an alias for a target namespace URI<br></span>
 | 
						|
                        <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-sequence"
 | 
						|
                                target="_blank"><code><xsl:sequence></code></a> - Constructs a sequence of nodes
 | 
						|
                            and/or atomic values<br></span>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
                <span name="collapse30">
 | 
						|
                    <div class="collapsible">
 | 
						|
                        <button class="section-button collapseTrigger" style="border: none" name="collapse2">[v2.0]
 | 
						|
                            Regular
 | 
						|
                            Expressions</button>
 | 
						|
                        <div class="content" name="collapse2data">
 | 
						|
                            [v2.0] <a href="https://www.w3.org/TR/xslt20/#element-analyze-string"
 | 
						|
                                target="_blank"><code><xsl:analyze-string></code></a> - Identifies substrings
 | 
						|
                            that
 | 
						|
                            match
 | 
						|
                            given regex<br>
 | 
						|
                            [v2.0] <a href="https://www.w3.org/TR/xslt20/#element-analyze-string"
 | 
						|
                                target="_blank"><code><xsl:matching-substring></code></a> - Used in conjunction
 | 
						|
                            with
 | 
						|
                            analize-string, returns matching substrings<br>
 | 
						|
                            [v2.0] <a href="https://www.w3.org/TR/xslt20/#element-analyze-string"
 | 
						|
                                target="_blank"><code><xsl:non-matching-substring></code></a> - Used in
 | 
						|
                            conjunction
 | 
						|
                            with
 | 
						|
                            analize-string, returns substrings that didn't match the regex
 | 
						|
                        </div>
 | 
						|
                    </div>
 | 
						|
                </span>
 | 
						|
                <span name="collapse30">
 | 
						|
                    <div class="collapsible">
 | 
						|
                        <button class="section-button collapseTrigger" style="border: none" name="collapse2">[v2.0 -
 | 
						|
                            3.0]
 | 
						|
                            Callable</button>
 | 
						|
                        <div class="content" name="collapse2data">
 | 
						|
                            <span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-function"
 | 
						|
                                    target="_blank"><code><xsl:function></code></a> - Declares a function that
 | 
						|
                                can be
 | 
						|
                                called from any XPath expression in the stylesheet<br></span>
 | 
						|
                            <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-evaluate"
 | 
						|
                                    target="_blank"><code><xsl:evaluate></code></a> - Allows dynamic evaluation
 | 
						|
                                of
 | 
						|
                                XPath
 | 
						|
                                expressions from a string<br></span>
 | 
						|
                            <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-assert"
 | 
						|
                                    target="_blank"><code><xsl:assert></code></a> - Asserts a XPath expression,
 | 
						|
                                optionally throwing a dynamic error<br></span>
 | 
						|
                            <!-- <span name="collapse2">[v3.0] <a href="  " target="_blank"><code><  ></code></a> - <br></span> -->
 | 
						|
                        </div>
 | 
						|
                    </div>
 | 
						|
                </span>
 | 
						|
                <div class="collapsible">
 | 
						|
                    <button class="section-button collapseTrigger" style="border: none" style="border: none">Other
 | 
						|
                        elements</button>
 | 
						|
                    <div class="content">
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#message"
 | 
						|
                            target="_blank"><code><xsl:message></code></a> - Writes a message to the output (used
 | 
						|
                        to
 | 
						|
                        report errors)<br>
 | 
						|
                        [v1.0] <a href="https://www.w3.org/TR/xslt-10/#fallback"
 | 
						|
                            target="_blank"><code><xsl:fallback></code></a> - Specifies an alternate code to run
 | 
						|
                        if
 | 
						|
                        the processor does not support an XSLT element<br>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-map"
 | 
						|
                                target="_blank"><code><xsl:map></code></a> - Used to construct a new
 | 
						|
                            map<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-map-entry"
 | 
						|
                                target="_blank"><code><xsl:map-entry></code></a> - Used to construct a singleton
 | 
						|
                            map
 | 
						|
                            (one key and one value)<br></span>
 | 
						|
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-expose"
 | 
						|
                                target="_blank"><code><xsl:expose></code></a> - Used to modify the visibility of
 | 
						|
                            selected components within a package<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-accumulator"
 | 
						|
                                target="_blank"><code><xsl:accumulator></code></a> - Defines a rule that is to be
 | 
						|
                            applied while the document is being sequentially processed<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-accumulator-rule"
 | 
						|
                                target="_blank"><code><xsl:accumulator-rule></code></a> - Defines a rule for an
 | 
						|
                            xsl:accumulator<br></span>
 | 
						|
                        <span name="collapse2"><b>Streaming: (not usable on this website!)</b></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-source-document"
 | 
						|
                                target="_blank"><code><xsl:source-document></code></a> - Initiates streamed or
 | 
						|
                            unstreamed processing of a source document<br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-use-package"
 | 
						|
                                target="_blank"><code><xsl:use-package></code></a> - <br></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-where-populated"
 | 
						|
                                target="_blank"><code><xsl:where-populated></code></a> - Allows conditional
 | 
						|
                            content
 | 
						|
                            construction to be made streamable<br></span>
 | 
						|
                        <span name="collapse2"><b>Packages: (not usable on this website!)</b></span>
 | 
						|
                        <span name="collapse2">[v3.0] <a href="https://www.w3.org/TR/xslt-30/#element-accept"
 | 
						|
                                target="_blank"><code><xsl:accept></code></a> - Allows a package to restrict the
 | 
						|
                            visibility of components exposed by a package that it uses<br></span>
 | 
						|
                        <!-- <span name="collapse2">[v3.0] <a href="  " target="_blank"><code><  ></code></a> - <br></span> -->
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </span>
 | 
						|
 | 
						|
        </div>
 | 
						|
 | 
						|
    </div>
 | 
						|
 | 
						|
    <!-- <script>
 | 
						|
        function getVersion() {
 | 
						|
            return document.getElementById("versions").value;
 | 
						|
        }
 | 
						|
    </script> -->
 | 
						|
    <script>
 | 
						|
        function processTooltip() {
 | 
						|
            console.log("processTooltip");
 | 
						|
 | 
						|
 | 
						|
            if (getProcInfo() == "xalan") {
 | 
						|
                document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0 functions";
 | 
						|
                document.getElementById("processorTooltipInfo").innerText = "Supports XSLT 1.0";
 | 
						|
                hideList(document.getElementsByName("collapse30"));
 | 
						|
            } else {
 | 
						|
                document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0, 2.0 & 3.0 functions";
 | 
						|
                document.getElementById("processorTooltipInfo").innerText = "Supports XSLT up to 3.0";
 | 
						|
                showList(document.getElementsByName("collapse30"));
 | 
						|
            }
 | 
						|
        }
 | 
						|
    </script>
 | 
						|
    <script>
 | 
						|
        function getProcessor() {
 | 
						|
            return document.getElementById("processors").value;
 | 
						|
        }
 | 
						|
    </script>
 | 
						|
    <script>
 | 
						|
        function getVersion() {
 | 
						|
            if (getProcInfo() == "xalan") {
 | 
						|
                return "1.0";
 | 
						|
            } else {
 | 
						|
                return "3.0";
 | 
						|
            }
 | 
						|
        }
 | 
						|
    </script>
 | 
						|
    <script>
 | 
						|
        function getProcInfo() {
 | 
						|
            var processVariables = document.getElementById("processors").value;// + "&version=" + document.getElementById("versions").value;
 | 
						|
            return processVariables;
 | 
						|
        }
 | 
						|
    </script>
 | 
						|
 | 
						|
    <script>
 | 
						|
        var triggerList = document.getElementsByClassName("collapseTrigger");
 | 
						|
        for (i = 0; i < triggerList.length; i++) {
 | 
						|
            console.log("trigger connected");
 | 
						|
            triggerList[i].addEventListener("click", function () {
 | 
						|
                console.log("click");
 | 
						|
                var collapsible = this.parentElement;
 | 
						|
                var collapsibleData = this.nextElementSibling;
 | 
						|
                if (collapsibleData.style.maxHeight > "0px") {
 | 
						|
                    collapsibleData.style.maxHeight = "0px";
 | 
						|
 | 
						|
                    this.classList.toggle("active", false);
 | 
						|
                    if (!this.classList.contains("collapsibleMini")) {
 | 
						|
                        collapsible.classList.toggle("active", false);
 | 
						|
                    }
 | 
						|
 | 
						|
                    var subLists1 = collapsibleData.getElementsByClassName("content");
 | 
						|
                    var subLists2 = collapsibleData.getElementsByClassName("active");
 | 
						|
                    for (j = 0; j < subLists1.length; j++) {
 | 
						|
                        subLists1[j].style.maxHeight = "0px";
 | 
						|
                    }
 | 
						|
                    for (j = 0; j < subLists2.length; j++) {
 | 
						|
                        subLists2[j].classList.toggle("active", false);
 | 
						|
                    }
 | 
						|
                } else {
 | 
						|
                    collapsibleData.style.maxHeight = (collapsibleData.scrollHeight) + "px";
 | 
						|
 | 
						|
                    this.classList.toggle("active", true);
 | 
						|
                    if (!this.classList.contains("collapsibleMini")) {
 | 
						|
                        collapsible.classList.toggle("active", true);
 | 
						|
                    } else {
 | 
						|
                        var parentContent = this.closest(".content");
 | 
						|
                        parentContent.style.maxHeight = (parentContent.scrollHeight + collapsibleData.scrollHeight) + "px";
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
    </script>
 | 
						|
 | 
						|
    <script>
 | 
						|
        function init() {
 | 
						|
            //Handle clicks in whole form and set info in tooltip
 | 
						|
            setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here');
 | 
						|
            setDefaultContent(document.getElementById("transformArea"), 'Insert XSLT here');
 | 
						|
            console.log("init");
 | 
						|
            // refreshTooltip();
 | 
						|
            processTooltip();
 | 
						|
            tool.addEventListener('click', event => {
 | 
						|
                //Check if script was called from textarea or selector
 | 
						|
                var targetID = event.target.getAttribute('id');
 | 
						|
                if (targetID !== "processors" && targetID !== "xmlArea" && targetID !== "transformArea" && targetID !== "versions") {
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
 | 
						|
                processTooltip();
 | 
						|
                // console.log("clock");
 | 
						|
            })
 | 
						|
        }
 | 
						|
    </script>
 | 
						|
 | 
						|
</body>
 | 
						|
 | 
						|
</html> |