Figure 5  XSLT Instructions
Instruction Syntax Description
xsl:copy-of <xsl:copy-of  select = expression /> Emits the node-set corresponding to the select expression.
xsl:value-of <xsl:value-of  select = string-expression  disable-output-escaping = "yes"  | "no" /> Emits the string corresponding to the select expression.
xsl:if <xsl:if  test = boolean-expression>  <!- - Content: template - -> </xsl:if> Evaluates the template if and only if the test expression evaluates to true.
xsl:choose <xsl:choose>  <!- - Content: (xsl:when+, xsl:otherwise?) - -> </xsl:choose> Evaluates the template from the first xsl:when clause whose test expression evaluates to true. If none of the test expressions evaluate to true, then the template contained in the xsl:otherwise clause is evaluated.
xsl:for-each <xsl:for-each  select = node-set-expression>  <!- - Content: (xsl:sort*, template) - -> </xsl:for-each> Evaluates the template against each node in node-set returned by the select expression. The order of evaluation can be influenced using one or more xsl:sorts.
xsl:call-template <xsl:call-template  name = qname>  <!- - Content: xsl:with-param* - -> </xsl:call-template> Invokes the template rule named by name.
xsl:variable <xsl:variable  name = qname   select = expression>  <!- - Content: template - -> </xsl:variable> Declares a variable named name and initializes it using the select expression or template.
xsl:text <xsl:text  disable-output-escaping = "yes" | "no">  <!- - Content: #PCDATA - -> </xsl:text> Emits the text found in #PCDATA. Escaping of the five built-in entities is controlled using disable-output-escaping.
xsl:number <xsl:number  level = "single" | "multiple" | "any"  count = pattern   from = pattern   value = number-expression   format = { string }  lang = { nmtoken }  letter-value = { "alphabetic" | "traditional" }  grouping-separator = { char }  grouping-size = { number } /> Emits a number based on the XPath number expression found in value.
xsl:copy <xsl:copy  use-attribute-sets = qnames>  <!- - Content: template - -> </xsl:copy> Copies the current context node (and associated namespace nodes) to the result tree fragment.
xsl:apply-templates <xsl:apply-templates  select = node-set-expression   mode = qname>  <!- - Content: (xsl:sort | xsl:with-param)* - -> </xsl:apply-templates> Invokes the best-match template rules against the node-set returned by the select expression.
xsl:apply-imports <xsl:apply-imports /> Promotes the current stylesheet in import precedence.
xsl:message <xsl:message  terminate = "yes" | "no">  <!- - Content: template - -> </xsl:message> Emits a message in a processor-dependent manner.
xsl:fallback <xsl:fallback>  <!- - Content: template - -> </xsl:fallback> Evaluates the template when the parent instruction/directive is not supported by the current processor.
xsl:comment <xsl:comment>  <!- - Content: template - -> </xsl:comment> Emits an XML comment containing the template as its character data.
xsl:processing-instruction <xsl:processing-instruction  name = { ncname }>  <!- - Content: template - -> </xsl:processing-instruction> Emits an XML processing instruction whose [target] is name and whose [children] are based on template.
xsl:element <xsl:element  name = { qname }  namespace = { uri-reference }  use-attribute-sets = qnames>  <!- - Content: template - -> </xsl:element> Emits an XML element whose [local name] is name, whose [namespace URI] is namespace, and whose [children] are based on template.
xsl:attribute <xsl:attribute  name = { qname }  namespace = { uri-reference }>  <!- - Content: template - -> </xsl:attribute> Emits an XML attribute whose [local name] is name, whose [namespace URI] is namespace, and whose [children] are based on template.