# xslt

## Description

Invoke XSLT Processor.

## Parameters

processor
  Description: Name XSLT processor

  Domain: xalan_cpp|xalan_java|xsltproc|gexslt

  Default: xalan_cpp

input
  Description: Name of XML input file

  Domain: Valid filename pointing to existing file

  Default: -

xsl
  Description: Name of stylesheet (XSL) file

  Domain: Valid filename pointing to existing file

  Default: -

output
  Description: Name of output file

  Domain: Valid filename

  Default: -

indent
  Description: Number of spaces for indentation of child elements

  Domain: Integer

  Default: 4

## RNG Specification

      <define name="xslt">
        <element name="xslt">
          <ref name="dir_if_unless"/>
          <attribute name="input"/>
          <attribute name="output"/>
          <attribute name="stylesheet"/>
          <optional>
            <attribute name="processor">
              <!-- runtime evaluation
              <choice>
                <value>xalan_cpp</value>
                <value>xalan_java</value>
                <value>xsltproc</value>
              </choice>
              -->
            </attribute>
          </optional>
          <optional>
            <attribute name="indent"/> <!-- if attribute 'processor' equals 'xalan_java' or 'xalan_cpp'--><-- TODO - implement for gexslt -->
          </optional>
          <optional>
            <attribute name="format"/> <!-- if attribute 'processor' equals 'xalan_java' -->
          </optional>
          <zeroOrMore>
            <element name="parameter">
              <attribute name="name"/>
              <attribute name="value"/>
            </element>
          </zeroOrMore>
          <optional>
            <attribute name="extdirs"/> <!-- if attribute 'processor' equals 'xalan_java' -->
          </optional>
          <optional>
            <attribute name="classpath"/> <!-- if attribute 'processor' equals 'xalan_java' -->
          </optional>
        </element>
      </define>

## Examples

Note that string parameters must be surrounded by a single quote ('), else they will be interpreted as a number.

For gexslt, all parameters are string values, so the single quotes are not needed, unless they contain embedded blanks, which might confuse the shell.

Gexslt can also take any XPath expression as a parameter value, but this is not possible via geant.

      <xslt
        input="${GOBO}/doc/structure/index.xml"
        stylesheet="${GOBO}/doc/misc/gobo2db.xsl"
        output="${GOBO}/doc/structure/index2.xml"
      >

      <xslt
        input="${GOBO}/doc/structure/index.xml"
        stylesheet="${GOBO}/doc/misc/gobo2html.xsl"
        output="${GOBO}/doc/structure/index2.html"
      >
        <parameter name="previous" value="&quot;'../license.html'&quot;"/>
        <parameter name="next" value="&quot;'../time/index.html'&quot;"/>
        <parameter name="toc" value="&quot;'../index.html'&quot;"/>
      </xslt>