<td><input class="flat" type="text" name="email"/></td>
</tr>
<tr>
<td colspan="2">
<xsl:text>Subject</xsl:text><BR/>
<input type="text" name="subject"/><br/>
<!-- Π ΡΠΊΡΡΡΠΎΠΌ ΠΏΠΎΠ»Π΅ posted ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ -->
<input type="hidden" name="posted" value="{page/date}"/><br/>
<textarea rows="10" cols="50" name="msg"/><br/><br/>
<input type="submit" value="Post"/>
</td>
</tr>
</table>
</form>
<!-- ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ -->
<xsl:apply-templates select="page"/>
</xsl:template>
<!-- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΡΠ°Π½ΠΈΡΡ -->
<xsl:template match="page">
<xsl:apply-templates select="messages"/>
</xsl:template>
<!-- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ -->
<xsl:template match="messages">
<xsl:apply-templates select="message"/>
</xsl:template>
<!-- ΠΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ -->
<xsl:template match="message">
<xsl:text>From: </xsl:text>
<xsl:choose>
<!-- ΠΡΠ»ΠΈ e-mail Π½Π΅ ΡΠΊΠ°Π·Π°Π½, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΠΌΡ -->
<xsl:when test="not(EMAIL)">
<xsl:value-of select="PERSON"/>
</xsl:when>
<!-- ΠΡΠ»ΠΈ e-mail ΡΠΊΠ°Π·Π°Π½, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΡ -->
<xsl:otherwise>
<A href="mailto:{EMAIL}"><xsl:value-of select="PERSON"/></A>
</xsl:otherwise>
</xsl:choose>
<!-- ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π΄Π°ΡΡ Π·Π°ΠΏΠΈΡΠΈ -->
<xsl:value-of select="concat(', ', POSTED)"/><br/>
<!-- ΠΡΠ»ΠΈ Π±ΡΠ»Π° ΡΠΊΠ°Π·Π°Π½Π° ΡΠ΅ΠΌΠ°, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π΅ -->
<xsl:if test="SUBJECT">
<xsl:text>Subject: </xsl:text>
<xsl:value-of select="SUBJECT"/><BR/>
</xsl:if>
<HR/>
<!-- ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ -->
<xsl:value-of select="MSG"/>
</xsl:template>
</xsl:stylesheet>
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ ΡΠ°ΠΌΠΈΠΌ php-ΡΠΊΡΠΈΠΏΡΠΎΠΌ.
ΠΠΈΡΡΠΈΠ½Π³ 9.5. Π‘ΠΊΡΠΈΠΏΡ guestbook.php<html>
<head>
<title>Guestbook</title>
<META
http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<?php
// ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ
$sourcefile = "source.xml";
$sourcehandle = fopen($sourcefile, "r")
or die("ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.");
$source = fread($sourcehandle, filesize($sourcefile));
// ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
$stylesheetfile = "stylesheet.xsl";
$stylesheethandle = fopen($stylesheetfile, "r")
or die("ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ");
$stylesheet = fread($stylesheethandle, filesize($stylesheetfile));
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ
$xslt = @xslt_create() or die("Can't create XSLT handle!");
// ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
@xslt_process($stylesheet, $source, $result);
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
echo $result;
// ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΡΡΡ
@xslt_free($xslt);
?>
</body>
</html>
ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ Π½Π° ΡΠΈΡ. 9.9.
Π ΠΈΡ. 9.9. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΈΠ· PHP-ΡΠΊΡΠΈΠΏΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Π³ΠΎΡΡΠ΅Π²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² JavaScript
JavaScript ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΡ ΡΠ·ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ Web. Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ JavaScript ΠΈ MSXML ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° XML ΠΈ XSLT.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠΈΡΡΠΈΠ½Π³ 9.6. XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°<?xml version="1.0" encoding="windows-1251"?>
<catalog>
<category title="ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΡ">
<category title="ΠΠ°ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ"/>
<category title="Π‘Π΅ΡΠ²Π΅ΡΡ"/>
</category>
<category title="ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΡΡΡΠΈΠ΅">
<category title="ΠΡΠΎΡΠ΅ΡΡΠΎΡΡ"/>
<category title="ΠΠ°ΡΠ΅ΡΠΈΠ½ΡΠΊΠΈΠ΅ ΠΏΠ»Π°ΡΡ"/>
</category>
<category title="Π Π°ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ">
<category title="ΠΠ°ΡΡΡΠΈΠ΄ΠΆΠΈ">
<category title="ΠΠ°ΡΡΡΠΈΠ΄ΠΆΠΈ Π΄Π»Ρ ΠΏΠ»ΠΎΡΡΠ΅ΡΠΎΠ²"/>
<category title="ΠΠ°ΡΡΡΠΈΠ΄ΠΆΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΎΠ²"/>
</category>
<category title="Π’ΠΎΠ½Π΅ΡΡ"/>
<category title="ΠΡΠΌΠ°Π³Π°"/>
</category>
</catalog>
ΠΡΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ Π²Π΅ΡΠ²Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°Π» ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ "Π Π°ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ", ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ ΠΌΡ Π΅ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π½Π°Π΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅, ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ.
β‘ ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ»ΡΡΠ° ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ generate-id, ΠΌΡ Π½Π°ΠΉΠ΄Π΅ΠΌ Π² Π΄Π΅ΡΠ΅Π²Π΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $category.
β‘ ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΎΡΡΡ ansector-or-self, ΠΌΡ Π½Π°ΠΉΠ΄Π΅ΠΌ Π²ΡΠ΅ Π½Π°Π΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ, ΡΠΎ Π΅ΡΡΡ Π²ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠΌΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ. ΠΡΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄ $category/ancestor-or-self::category. ΠΠ°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $path.
β‘ ΠΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ΅ΠΉ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ; ΠΈΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ β ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π΅Π΅ ΡΠ·Π΅Π» ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΡΠ·Π»ΠΎΠ² $path. ΠΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ count(.|$path)=count($path).
ΠΡΠΊΠΎΠΌΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΈΡΠΎΠ³Π΅ Π·Π°ΠΏΠΈΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅.
ΠΠΈΡΡΠΈΠ½Π³ 9.7. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠ΅Π΅ Π½Π°Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ html ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ windows-1251 -->
<xsl:output method="html" encoding="windows-1251"/>
<!--
| ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ
| ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π΄Π΅ΡΠ΅Π²Π°
+-->
<xsl:param name="current" select="''"/>
<!-- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ -->
<xsl:key name="cat" match="category" use="generate-id(.)"/>
<!-- ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ -->
<xsl:variable name="category" select="key('cat',$current)"/>
<!--
| ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π½Π°Π΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΡΠ·Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
| ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ Π² Π΄Π΅ΡΠ΅Π²Π΅
+-->
<xsl:variable name="path"
select="$category/ancestor-or-self::category"/>
<!-- Π¨Π°Π±Π»ΠΎΠ½ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° -->
<xsl:template match="catalog">
<xsl:apply-templates select="category"/>
</xsl:template>
<!-- Π¨Π°Π±Π»ΠΎΠ½ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ-->
<xsl:template match="category">
<!-- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΎΡΡΡΡΠΏ -->
<xsl:param name="indent"/>
<!-- ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΡΡΡΠΏ -->
<xsl:value-of select="$indent"/>
<!-- ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠ»ΠΊΠΈ -->
<Π° href="javascript:expand('{generate-id(.)}')">
<!-- ΠΠ΅ΡΠ΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΈΠΊΠΎΠ½ΠΊΡ -->
<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>