рдирдорд╕реНрдХрд╛рд░ рдкреНрд░рд┐рдп рдЦрд╛рдмрд░реЛрд╡рдЪрдиреЗред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, XSLT рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрдард╛рдВрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЕрд╕рдлрд▓ рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рджрд┐рдпрд╛ рдЧрдпрд╛: GET рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреА рд╕рдВрдЦреНрдпрд╛ред рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдореВрд▓ рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрдо рдХрд░реЗрдВ:
Nav.xml рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓<?xml version="1.0" encoding="UTF-8"?> <root> <item id="1"/><item id="2"/><item id="3"/><item id="4"/><item id="5"/><item id="6"/><item id="7"/><item id="8"/><item id="9"/><item id="10"/><item id="11"/><item id="12"/><item id="13"/><item id="14"/><item id="15"/><item id="16"/><item id="17"/><item id="18"/><item id="19"/><item id="20"/><item id="21"/><item id="22"/><item id="23"/><item id="24"/><item id="25"/><item id="26"/><item id="27"/><item id="28"/><item id="29"/><item id="30"/><item id="31"/><item id="32"/><item id="33"/> </root>
рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдкреЗрдЬ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдкреГрд╖реНрда рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдкреГрд╖реНрда рдЕрдВрддрд┐рдо рдФрд░ рдЖрдЧреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реИред рдкреГрд╖реНрда рдкрд░ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордиреЗ рдЖрдпрд╛:
Nav.xsl рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рд╛рдЗрд▓ <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" indent="no" doctype-system="about:legacy-compat"/> <xsl:param name="page" select="1"/> <xsl:template match="/"> <xsl:variable name="pageItems" select="5"/> <xsl:variable name="pageCurrent"> <xsl:choose> <xsl:when test="number($page) < 1"> <xsl:text>1</xsl:text> </xsl:when> <xsl:when test="number($page) > ceiling(count(/root/*) div $pageItems)"> <xsl:value-of select="ceiling(count(/root/*) div $pageItems)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="number($page)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <html lang="ru"> <head> <title><xsl:value-of select="concat(' тДЦ ',$pageCurrent)"/></title> <style> #nav li{float:left;list-style:none;} #nav a{text-decoration:none;padding:4px;color:#333} #nav a.on, #nav a:hover{background:#bbb;} </style> </head> <body> <h1><xsl:value-of select="concat(' тДЦ ',$pageCurrent)"/></h1> <ul> <xsl:for-each select="/root/*[position() > ($pageCurrent * $pageItems - $pageItems) and position() <= ($pageCurrent * $pageItems)]"> <li><xsl:value-of select="@id"/></li> </xsl:for-each> </ul> <hr/> <xsl:call-template name="pageNav"> <xsl:with-param name="items" select="/root/*"/> <xsl:with-param name="pageCurrent" select="$page"/> <xsl:with-param name="pageItems" select="$pageItems"/> <xsl:with-param name="pageParty" select="4"/> </xsl:call-template> </body> </html> </xsl:template> <xsl:template name="pageNav"> <xsl:param name="items"/> <xsl:param name="pageCurrent"/> <xsl:param name="pageItems"/> <xsl:param name="pageParty"/> <xsl:variable name="count" select="ceiling(count($items) div $pageItems)"/> <ul id="nav"> <xsl:if test="$pageCurrent > 1"> <li><a href="?page=1"><<</a></li> <li><a href="?page={$pageCurrent - 1}"><</a></li> </xsl:if> <xsl:for-each select="$items[(position() - 1) mod $pageItems = 0]"> <xsl:if test="($pageCurrent - $pageParty) <= position() and ($pageCurrent + $pageParty) >= position()"> <li><a href="?page={position()}"> <xsl:if test="$pageCurrent=position()"> <xsl:attribute name="class">on</xsl:attribute> </xsl:if> <xsl:value-of select="position()"/> </a></li> </xsl:if> </xsl:for-each> <xsl:if test="$pageCurrent < $count"> <li><a href="?page={$pageCurrent + 1}">></a> </li> <li><a href="?page={$count}">>></a></li> </xsl:if> </ul> </xsl:template> </xsl:stylesheet>
рдпрд╣ рдереЛрдбрд╝рд╛ рд▓рдВрдмрд╛ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВред рддрд╛рд▓рд┐рдХрд╛ рдХреЛ 2 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреГрд╖реНрда рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореВрд▓ HTML рдорд╛рд░реНрдХрдЕрдк рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдореЗрдВ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реАред
рдкреГрд╖реНрда рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд╛рдо рд╕реЗ рдкреБрдХрд╛рд░рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 4 рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИред рдпреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЖрдЗрдЯрдо рд╣реИрдВ, рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреА рд╕рдВрдЦреНрдпрд╛, рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдЕрдм рд╣рдо PHP рдореЗрдВ рдПрдХ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦреЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХреЛрдИ рднреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдпрд╣рд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИред
Nav.php рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдлрд╛рдЗрд▓ <?php
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╣рдо рдбреЗрдЯрд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдПрдХ XSLT рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрдирд╛рдПрдБред рдпрджрд┐ рдХреЛрдИ рдкреГрд╖реНрда рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред