XSLT stylesheets are collections of templates. Each template associates a condition (e.g., an element in the source tree with a particular attribute) with a mixture of output data and instructions. These instructions refine and redirect processing, extending the simple matching mechanism to give you full control over the transformation.
A template does three things. First, it
matches a class of node. The
attribute holds an XSLT pattern which, much like an XPath expression,
matches nodes. When an XSLT processor is told to apply templates to a
particular node, the processor runs through all the templates in the
stylesheet and tests whether the node matches the template’s pattern.
All the templates that match this node are candidates for processing,
and the XSLT processor must select one.
Second, the template contributes a priority value to help the
processor decide which among eligible templates is the best to use. The
template that matches the current node with the highest import
precedence, or highest priority, is the one that will be used to process
it. Different factors contribute to this priority. A template with more
specific information will overrule one that is more generic. For
example, one template may match all elements with the XPath expression
*. Another may match a specific
element, while a third matches that element and further requires an
attribute. Alternatively, a template can simply state its precedence to
the processor using a
priority attribute. ...