Валиков Алексей Н.
Шрифт:
</xsl:template>
<!-- Шаблон обработки категории-->
<xsl:template match="category">
<!-- Параметр, указывающий отступ -->
<xsl:param name="indent"/>
<!-- Выводим отступ -->
<xsl:value-of select="$indent"/>
<!-- Выводим информацию о категории в виде ссылки -->
<а href="#">
<!-- Перед названием категории выводим соответствующую иконку -->
<img height="11" width="11" border="0">
<xsl:choose>
<!--
| Если категория не содержит субэлементов,
| выводим иконку с точкой
+-->
<xsl:when test="not(*)">
<xsl:attribute name="src">images/dot.gif</xsl:attribute>
</xsl:when>
<!--
| Если категория принадлежит ветке выбранной категории,
| выводим иконку с минусом, что означает раскрытую ветку
+-->
<xsl:when test="count(.|$path)=count($path)">
<xsl:attribute name="src">images/minus.gif</xsl:attribute>
</xsl:when>
<!--
| Если категория не принадлежит ветке выбранной категории,
| выводим иконку с плюсом, что означает нераскрытую ветку
+-->
<xsl:otherwise>
<xsl:attribute name="src">images/plus.gif</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</img>
<!--
| Выводим неразрывный пробел.
|   в Unicode соответствует
+-->
<xsl:text> </xsl:text>
<!-- Выводим название категории -->
<xsl:value-of select="@title"/>
</a>
<br/><xsl:text>
</xsl:text>
<!--
| Если категория принадлежит раскрываемой ветке,
| обрабатываем ее подкатегории
+-->
<xsl:if test="count(.|$path)=count($path)">
<xsl:apply-templates select="category">
<!-- Увеличиваем отступ на три пробела -->
<xsl:with-param name="indent"
select="concat($indent,'   ')"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Теперь осталось лишь только создать страницу, которая при помощи JavaScript и MSXML будет выполнять преобразования и выводить результат.
Для того чтобы воспользоваться возможностями MSXML, мы включим в нашу страницу два объекта:
<!-- Объект, представляющий входящий документ -->
<object
id="source"
width="0"
height="0"
classid="clsid:f5078f32-c551-11d3-89b9-0000f81fe221">
<param name="async" value="false">
<param name="validateOnParse" value="false">
</object>
<!-- Объект, представляющий документ преобразования -->
<object
id="stylesheet"
width="0"
height="0"
classid="clsid:f5078f32-c551-11d3-89b9-0000f81fe221">