Чтобы парсер воспринял XML-документ как XSLT-определение, требуется указать использовать специальный корневой тег и определить специальное пространство имен. Например:
<?xml version="1.0" standalone="no"?>
<xsl:stylesheet
xmlns="http://www.w3.org/TR/REC-html40"
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
version="1.0">
...
</xsl:stylesheet>
Корневой элемент «xsl:stylesheet» содержит в себе множество элементов «xsl:template», которые определяют правила преобразования. Например:
<xsl:template match="*|@*">
<xsl:copy>
<P><xsl:apply-templates select="@*|node()"/></P>
</xsl:copy>
</xsl:template>
<xsl:template match='text()'>
<P><xsl:value-of/></P>
</xsl:template>
В ходе обработки существует «текущий» узел обработки. Изначально, им является корневой элемент обрабатываемого XML-документа.
Парсер (например, MSXML) начинает просматривать шаблоны с самого последнего к самому первому – поиск шаблонов идет с конца XSLT. Каждый шаблон (элемент «xsl:template») содержит в себе атрибут “match” – его значение представляет собой выражение xPath. Если текущий узел (его параметры - имя, относительно местоположение, содержание) удовлетворяет этому выражению, то происходит обработка его содержимого, иначе происходит переход к следующему шаблону (который находится ближе к началу документа).
Специальный тег «xsl:apply-templates» позволяет произвести новый поиск шаблонов для указанных узлов (которые по-очереди будут текущими), причем множество обрабатываемых узлов указывается с помощью выражений xPath. В ходе обработки мы можем добавлять текст в результирующий документ. В XSLT есть возможность генерации тегов:
<xsl:element name="font">
<xsl:attribute name="color">
<!-- вычисляем значение цвета -->
</xsl:attribute>
</xsl:element>
Таким способом можно генерировать сложные документы с новой структурой или создавать узлы с различными значениями атрибутов.
. Преобразование в языке XSLT предстает в виде корректного (well-formed) XML документа [XML], соответствующего требованиям для пространств имен из Рекомендации XML [XML Names]. Оно может содержать как элементы, определяемые в XSLT, так и элементы, которые в XSLT не определены. Элементы, определяемые в XSLT, отличаются принадлежностью определенному пространству имен XML , которое в данной спецификации мы называем пространством имен XSLT. Таким образом, данная спецификация - это определение синтаксиса и семантики пространства имен XSLT.
Преобразование, выраженное через XSLT, описывает правила преобразования исходного дерева документа в конечное дерево. Преобразование строится путем сопоставления образцов и шаблонов. Образец сравнивается с элементами исходного дерева, а шаблон используется для создания частей конечного дерева. Конечное дерево отделено от исходного дерева. Структура конечного дерева может полностью отличаться от структуры исходного дерева. В ходе построения конечного дерева элементы исходного дерева могут подвергаться фильтрации и переупорядочению, также может добавлена новая структура.