æã
ãæ»ã«ãããŠããXSLTãã¯ãããžãŒããããã¢ããããŠãé£ãã質åãããŸãã ããšãã°ãåŒã§æ倧2ã€ã®æ°å€ãååŸããæ¹æ³ããŸãã¯ãµã€ã¯ã«ãæŽçããæ¹æ³ã ãããã®åé¡ã®å€ãã®çµã¿åããããããŒãžããŒã¿ãŒã§ãããããã€ãã®ããŒãžã§ã®ããã²ãŒã·ã§ã³ã®çµè«ã§ãããå¯èœã§ããã°äŸ¿å©ã§ãã Javascriptã«ã¯ãã·ã³ãã«ã§äŸ¿å©ãªããŒãžããŒã¿ãŒã®äŸãæ°å€ããããŸãã ãããããµãŒããŒããã®ããŒãžãXMLã§åºåãããå Žåãå¹³éãªèããçããŸããããŒãžããŒã·ã§ã³ãå«ãããŒãžã®ãã¹ãŠã®ã¬ã€ã¢ãŠããéçã«XSLTã§è¡ããªãã®ã¯ãªãã§ããã ãã®éçã«JSãå«ããŠããã¹ãŠãåçŽåã§ãããã®ã¯ãããŸããã ã³ãŒã·ã£ã®ã¢ãããŒãã¯ç°¡åãªæ¹æ³ãæ¢ããŠããŸããã
XSLTã®é·æãšçæ
JSã®1è¡ã§ã¯ãªããå€ãã®æ©èœãåãã12è¡ã®ååž°ãèšè¿°ããå¿
èŠããããŸãã ãã€ãã¹ã«ããŸãããã ããã«ããããããããã®ã¿ã¹ã¯ã¯å®è¡å¯èœã§ããã€ãŸãããã€ããã®ãããªãœãªã¥ãŒã·ã§ã³ãã©ããã«çŸãããšããããšã§ãã
Webã§ã¯ã2ã€ã®æ°åãè¿œå ããæ¹æ³ã«é¢ãã質åãšåæ§ã«ãã
HTMLããã®ã³ã¡ã³ããåé€ãããªãããã«XSLTã«ã³ã¡ã³ãããæ¹æ³ ããšããåçã«éåžžã«æè¬
ããŠããŸã ã ãããã£ãŠãæå°éã®ç¥èã§ãSOã®è©å€ãããªãã«æäŸãããŸãã
XSLTãé·å¹Žã«ããã£ãŠååšããŠãããããéåžžã«å€ããŠåçŽãªãã©ãŠã¶ã«å ããŠãå€ãã®ãã©ãŠã¶ãXML + XSLTãåŠçããèœåãç²åŸããŠããŸããã ããã¯ãç解ãã«ãã宣èšåã³ãŒãã®äœåãªæ°çŸè¡ã«ãã£ãŠãããµãŒããŒããã¯ã©ã€ã¢ã³ãïŒãã©ãŠã¶ãŒïŒã«äœæ¥ãã·ããããããšã§äœ¿çšã§ããŸãã
å€ãã®å Žåã宣èšæ§ã¯è¯ãã§ãã CSSã®ãããªäžé£ã®ã«ãŒã«ã¯ãç解ãšäœ¿çšãç°¡åã§ãã ããããäžè¬çãªæ§æã®åé¡ã䌎ã宣èšåèšèªã§ååž°ããã·ãŒãžã£ãæžãå§ããããšã¯ããªã¿ã¯ã絶æçãªç¶æ³ã«é¥ã£ãŠãã人ã
ã®ããã®æŽ»åã§ãã ãããã£ãŠããã®èšäºã«ã¯2ã€ã®ç®æšããããŸã-ãªã¿ã¯ã®ããã«ããããŠèªæžã®ããã«ããããŠéã³ã®ããã«-人ã
ã®ããã«ãå®éã®äŸãåãäžããŠãããªãèªèº«ã®ããã«ãããæ§æããŸãã
Habréã§ãåæ§ã®ãããã¯ãããã§åãäžããããŸããïŒ
habrahabr.ru/post/138740 ïŒ
ããŒãžããŒã¿ãŒã®å®è£
ïŒã
ããŒãžããŒã¿ãŒã«å¿
èŠãªãã®
XMLãããçŸåšã®ããŒãžçªå·ãšïŒå Žåã«ãã£ãŠã¯ïŒãªã¹ãã®æåŸã®ããŒãžçªå·ã®ã¿ãåãåããŸãã ãã以å€ã¯ã* .xslã®ããŒãžããŒã¿ã¹ã¿ãã£ãã¯ã§èšå®ãããŸãã å¶äœãããããããã«ããäŒã¿ãã¯ããŸããããŸããã çŸåšã®ããŒãžãžã®ãªã³ã¯ã®åšãã®ãªã³ã¯ã®æ°ã ãã ãããããã®åŸãæ¡åŒµæ©èœãè¿œå ãããŸãã-æ°åãŸãã¯å¥ã®ééã§æ¬¡ã®ããŒãžã®åºåã ããã¯ãããŒãžããŒã¿ãŒã®å¯èœæ§ã瀺ãè¯ãäŸã®ããã«æããŸããã
1ïŒçŸåšã®ããŒãžã衚瀺ããŸãïŒãªã³ã¯èªäœãæŽæ°ããå¿
èŠãããå ŽåããŸãã¯ãªã³ã¯ãªãã§ãªã³ã¯ã䜿çšããå ŽåïŒã
2ïŒé£æ¥ããããŒãžã®ããã€ãã®ãªã³ã¯ã衚瀺ããŸãïŒçŸåšã®ããŒãžã®ååŸïŒã
3ïŒæåããã³æåŸã®ïŒæ¥µç«¯ãªïŒããŒãžïŒãé£æ¥ãã«è©²åœããªãå ŽåïŒã
4ïŒçç¥èšå·ãé£æ¥ããããŒãžãšæ¥µç«¯ãªããŒãžã®éã«è¡šç€ºãããŠããªãããŒãžãããå Žåã
5ïŒãªãã·ã§ã³-çç¥ãããããŒãžééã®ã»ãŒäžå€®ã«ç§»åããæ¥åäžã®ãªã³ã¯ã
6ïŒãšããžãäžèŽããããã«äžéšã®ãªã³ã¯ã衚瀺ãããªãå ŽåãçŸåšã®ããŒãžã®ãªã³ã¯ã®å察åŽã«æ€åºãããŠããªãæ°ã®ãªã³ã¯ãè¿œå ããŸãã ã€ãŸããæå®ãããæ°ã®ãªã³ã¯å
ã§äœã衚瀺ãããã衚瀺ããŸãã ããšãã°ã5ã€ã®ãªã³ã¯ãåããš5ã€ã®ãåŸãã瀺ããŠããŸããã3çªç®ã®ããŒãžã衚瀺ãããšããåãã®2ã€ã®ãªã³ã¯ã衚瀺ãããŸãã ãããã£ãŠãããå Žåã¯ãåŸãã«8ã€ã®ãªã³ã¯ã衚瀺ããŸãïŒæ倧ããŒãžæ°ãè¶
ããªãããã«ããŸãïŒã
ïŒãã®èŠä»¶ã¯éšåçã«æºããããŠããŸããããŒãžçªå·ãæåã«è¿ãå Žåãå³åŽã«äœåãªãªã³ã¯ã衚瀺ãããããŒãžçªå·ãæ倧ã«è¿ãå Žåã¯ãªã¹ãã®ååã®ã¿ã衚瀺ãããŸããããã¯ãç«ã£ããïŒ
7ïŒæåŸã«ãpaginatoré¢æ°ã®äºé䜿çš-æåããæ°åïŒãŸãã¯5ã€ããã¹ãŠãæ§æãããŠããïŒãŸã§ã®ããŒãžã®åºåã éåžžã«å€§ããªãªã¹ãããã°ããæ°åããŒãžã«ç§»åããå¿
èŠãããå Žåã«åœ¹ç«ã¡ãŸãããéåžžã¯æåã®ããŒãžã«ããŸãã çµäºããŒãžãæå®ãããŠããå Žåã10ã®ãªã¹ãã¯è¡šç€ºãããŸããã
XSLT Taoã«é£ã³èŸŒã
ã¹ããŒãªãŒãæçšã«ããããã«ããã®å®£èšåèšèªã§ã®ããã°ã©ãã³ã°ææ³ã®ãã¬ãŒãã³ã°ã®åœ¢ã§ã¹ããŒãªãŒãæ§ç¯ããŸãã åçŽãªã¢ãã«ãããŸããŸãè€éã«ãªãã¢ãã«ãŸã§ãããŒãžããŒã¿ãŒãæ§ç¯ããŸãã
æ§ç¯ã®åºç€ãšããŠãç¹å®ã®ãã°ãã¡ã€ã«ãååŸããŸããããã¯ãå€ãã®å ŽåWeb管çè
ã«ãã£ãŠæ€åºããã衚瀺ããå¿
èŠããããŸãã ãã©ãŠãžã³ã°ã䟿å©ã«ããããã°ã©ãã³ã°ã³ã¹ããå°ããããããã«ãããŒãžããšã«ãã°ãXMLã§å°å·ãããã¹ãŠã®ãã¶ã€ã³ã¯ã¯ã©ã€ã¢ã³ãXSLTãå«ãã¯ã©ã€ã¢ã³ããã¯ãããžãŒã«å²ãåœãŠãããŸãã
åè¿°ã®ããã«ãããŒãžããŒã¿ãŒã¯æç¶ãèšèªã§è¡ãæ¹ãèªç¶ã§ãã ããããXSLTã¯ãã®ã¿ã¹ã¯ã«ã察å¿ããå®åŒåã®ãã¹ãŠã®èŠä»¶ãæºãããŸãã å®è£
ã®å€ãã®äŸã¯ã€ã³ã¿ãŒãããäžã«æ£ãã°ã£ãŠããã1ã€ã§ãHabréã§äŒããŸããã ããããæ§ç¯èŠåã®èª¬æããªãäŸã¯ãåºæ¬ããå§ããŠãå®è£
ãç¬ç«ããŠè¡ããªããã°ãªããªããšããäºå®ã«ã€ãªãããŸãã ãã®äŸã¯ãå®å
šã§æ©èœçãªããŒãžããŒã¿ãŒã®äŸãæäŸããããã®è©Šã¿ã§ãããæ¥ç¶ãåçŽã§ããããã®ç®¡çãææžåãããããšãæåŸ
ãããŠããŸãã
ãã°ã«ã¯çŽ500ã®ãšã³ããªããããŸãããããŒãžåå²ãè¡ãæãç°¡åãªæ¹æ³ã¯ãããŒãžã«10åã®ãªã³ã¯ã衚瀺ãã次ã®ããã«HTMLã§ããŒãžçªå·ãæåã§èšè¿°ããããšã§ãã
<a href="page.xml?page=2"/>2</a>
500件ãè¶
ããã¬ã³ãŒããŸãã¯ãããããæ·±ãã¬ã³ãŒãããã£ãã«ãªãå Žåããã£ãã«èŠãããŸãããããŒãžçªå·ãå
¥åããããã®ãã©ãŒã ã®å±æ§ã§ååã§ãã ãŸããåºå£ã ããã¯ãXSLTã®æ·±åãå¿
èŠãšãããxslãã¡ã€ã«ã§äžè¬çã«è¡ãããŸãã
<?xml version="1.0"?> <!DOCTYPE html> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head><title>Someone Log</title> <meta http-equiv="x-ua-compatible" content="IE=8"/> <style> body{ ..../* , , */ } </style> <script type="text/javascript"> ... </script> </head> <body> <table class="tb1" id="tb1"> <tr> <th>ip + <span class="n">#</span></th> <th>path</th> <th>browser</th> <th>accType</th> <th>fileName</th> <th>settings</th> <th>date</th> </tr> <xsl:for-each select="/ha/actions/action"> <tr class="account-{accountType} {fileName}"> <td class="help leftJust" title2="{@id}"> <div class="full"> <span><xsl:value-of select="@id"/></span> </div> <div class="brief"><xsl:value-of select="ip"/></div> </td> <td class="leftJust"><a href="http://habrahabr.ru{path}" target="_blank"> <xsl:value-of select="path"/> </a></td> <td class="help UA" title2="{agent}" align="center"> <div class="full"> <div class="fullRel"> <span><xsl:value-of select="agent"/></span> </div> </div> <div class="brief"><xsl:value-of select="browser"/></div> </td> <td><xsl:value-of select="accountType"/></td> <td class="fileName {fileName}"><xsl:value-of select="fileName"/></td> <td> <span class="{settings/property/@value}"> <xsl:value-of select="settings/property/@name"/> </span> </td> <xsl:variable name="dt" select="date"/> <td><span title="{substring($dt,1,10)}"> <xsl:value-of select="substring($dt,12,10)"/> </span></td> </tr> </xsl:for-each> </table> <div class="pagination"> <span class=""> <a href="page.xml?page=1"/>1</a> </span> <span class=""> <a href="page.xml?page=2"/>2</a> </span> <span class=""> <a href="page.xml?page=3"/>3</a> </span> ... </body> </html>
æåã®åé¡ã¯ãçŸåšã®ããŒãžã®ã¯ã©ã¹ãäœæããŠããããäœããã®æ¹æ³ã§éžæãŸãã¯ç¡å¹åããããšããé£ããããšã§ãã åé¡ãããŸãããããã«ã¯JSããããŸãã ããããèšç»ã§ã¯-XSLTãžã®ãªã³ã¯ãäœæããŸãã ãããã£ãŠããã¶ãã¶ã§ããã10è¡ã®ãã®å¥åŠãªã«ãŒããã©ã®ããã«äœæããXSLTãžã®ãªã³ã¯ã®ãªã¹ããæåã«ç·šæããæ¹æ³ãèŠãŠã¿ãŸãããã
ååž°é¢æ°ãäœæããŸãã ãã³ãã¬ãŒãé¢æ°ã¯ããã³ãã¬ãŒãæ¬äœããåŒã³åºãããŸãã ãã¹ãŠã®ãã©ã¡ãŒã¿ã転éããå¿
èŠããããŸã-ãããã¯ç¬ç«ããåå空éã§ãããããéåžžã®èšèªã®ããã«ã°ããŒãã«ã¹ã³ãŒããå®çŸ©ããããšã¯äžå¯èœã§ãã
<xsl:template match="/"> ... <xsl:comment>====== , 10 ======</xsl:comment> <xsl:call-template name="paginate"> <xsl:with-param name="nLinks" select="10"/> <xsl:with-param name="p" select="/ha/page"/> <xsl:with-param name="url" select="$url"/> </xsl:call-template> </div></body></html> </xsl:template> <xsl:comment>====== - - ======</xsl:comment> <xsl:template name="paginate"> <xsl:param name="i" select="1"/> <xsl:comment> () </xsl:comment> <xsl:param name="nLinks"/> <xsl:param name="p"/> <xsl:param name="url"/> <xsl:if test="$i <= $nLinks"> <span class="{concat('active', number($i = $p)) }"> <a href="{concat($url, $i)}"> <xsl:value-of select="$i"/> </a> </span> <xsl:call-template name="paginate"> <xsl:with-param name="i" select="$i + 1"/> <xsl:with-param name="nLinks" select="$nLinks"/> <xsl:with-param name="p" select="$p"/> <xsl:with-param name="url" select="$url"/> </xsl:call-template> </xsl:if> </xsl:template>
ããããµã€ã¯ã«ãäœã£ããïŒ 5è¡ã®åŒã³åºããš15è¡ã®é¢æ°ãä»äºãããŸãã-çŸåšã®ãªã³ã¯ãããŒã¯ã§ãã30è¡ã®HTMLãæžãããšã¯ã§ããŸããïŒ ããã¯ææã§ãããããŒãžããŒã·ã§ã³ãåŸæããããã®æåã®ã¹ãããã§ãã ãããŠãJSã§5ã®ã³ã¹ããããããèªã¿ããããªããšããããšã¯ãããŸããã äž»ãªããšã¯æ
£ããããšã§ãããããããæããæ¥ãã§ãããã
8è¡ã®ã³ãŒããçãããããã«ãããªãã¯ãè¡ãããŸãããã¯ã©ã¹ãæå®ããå Žåãchoose-when-otherwiseãããã¯ã¯æžã蟌ãŸããŸãããããactiveããšããåèªã«1ãŸãã¯0ãè¿œå ãããããããactive1ã=çŸåšã®ããŒãžã®ãªã³ã¯ã¯ã©ã¹ã§ãã
èšèªæ©èœã¯ãã®ã»ã¯ã·ã§ã³ã«è¡šç€ºãããŸããããã©ã«ãã®ãã©ã¡ãŒã¿ãŒã¯ãåŒã³åºããšãã«çç¥ã§ããŸãã ååž°ã§ã¯ãå¿
èŠãªãã¹ãŠã®ãã©ã¡ãŒã¿ãŒããªã¹ãããå¿
èŠããããŸãã select = "$ i + 1"ã¯ãµã€ã¯ã«ã移åããéèŠãªå Žæã§ãããtest = "$ i <= $ nLinksã¯ãããåæ¢ããå Žæã§ãã
ïŒlt; -èšèªã®ç¹æ§ã«å¿ããŠããã€ãã®æåïŒ<ã>ãïŒã/ïŒãèšè¿°ããå¿
èŠãããã
ããŒãžæ°ãå¯å€ã§ãèŠçŽ å
ã®æ°ã«ãã£ãŠæ±ºå®ãããå Žåã¯ãåã«æžã
<xsl:with-param name="nLinks" select="/ha/pageLast"/>
ãªã³ã¯ã®ååŸã«å¯Ÿç§°
次ã®ã¿ã¹ã¯ïŒéãããæ°ã®ãªã³ã¯ã衚瀺ããŸãããã®ååã¯çŸåšã®ããŒãžã®ãªã³ã¯ã®åã«ãæ®ãã®ååã¯åŸã«ãªããŸãã äœåºŠãç¹°ãè¿ãããåŒã«ã¯å€æ°ã䜿çšããŸãã ééãã«ãŒãããŸããã1æªæºã®æ°ã®ãªã³ã¯ã¯è¡šç€ºããŸãããå¶æ°ã®ãªã³ã¯ã®å Žåããåãã«ãã1ã€ã®ãªã³ã¯ããããšèããããŸãïŒã»ãšãã©ã®å Žåããã®æ°ã¯åžžã«å¥æ°ã«ãªããŸããããã¹ãŠã®ã±ãŒã¹ã§ãã¹ãããå¿
èŠããããŸãïŒã
å®è£
ã«ã¯ãè¿œå ã®ãtoããã©ã¡ãŒã¿ãå¿
èŠã§ããããã®ãã©ã¡ãŒã¿ã§ã¯ãæ倧ããŒãžçªå·ãååž°çã«æ ŒçŽããã³éä¿¡ãããŸãã
<div class="pagination"> : <xsl:variable name="url">http://37.230.115.43/actions/last.xml?page=</xsl:variable> <xsl:variable name="p" select="/ha/page"/> <xsl:comment> </xsl:comment> <xsl:variable name="nL" select="9"/> <xsl:comment> </xsl:comment> <xsl:call-template name="paginate"> <xsl:with-param name="i" select="$p"/> <xsl:with-param name="nLinks" select="$nL"/> <xsl:with-param name="url" select="$u"/> </xsl:call-template> </div></body></html> </xsl:template> <xsl:template name="paginate"> <xsl:param name="i" select="1"/> <xsl:param name="nLinks"/> <xsl:param name="url"/> <xsl:param name="to" select="$i + $nLinks"/> <xsl:variable name="n2" select="floor($nLinks div 2)"/> <xsl:if test="$i < $to"> <xsl:if test="$i - $n2 >= 1"> <span class="{concat('active', number($i = $to - ceiling($nLinks div 2))) }"> <a href="{concat($url, $i - $n2)}"> <xsl:value-of select="$i - $n2"/> </a> </span> </xsl:if> <xsl:call-template name="paginate"> <xsl:with-param name="i" select="$i + 1"/> <xsl:with-param name="url" select="$url"/> <xsl:with-param name="nLinks" select="$nLinks"/> <xsl:with-param name="to" select="$to"/> </xsl:call-template> </xsl:if> </xsl:template>
äžè¶³ããŠãããã®ã2ã€ãããŸããæåã®ããŒãžãžã®ãªã³ã¯ïŒå¿
èŠãªå ŽåïŒãããã³æåã®ããŒãžã«ãããšãã®ååã§ã¯ãªããå®å
šãªæ°ã®ãªã³ã¯ã®è¡šç€ºã§ãã ãªã³ã¯ã1ãã衚瀺ããå¿
èŠãããå Žåãããã³-ããŒãžã®ãªã³ã¯ã®äžéšãã¹ãããããããšãæå³ããçç¥èšå·ã®å Žåãæ€èšŒé¢æ°ãåŒã³åºãåã«è¿œå ããŸãã
é¢æ°ã«ã«ãŠã³ã¿ãŒãè¿œå ããŸãããã®ã«ãŠã³ã¿ãŒã¯ã$ nLinkã®æ°ã«å¿ããŠãçŸåšãšã¯ç°ãªããå®éã«è¿œå ããããªã³ã¯ã®æ°ãã«ãŠã³ãããŠã$ nLinkã«å°éãããµã€ã¯ã«ãåæ¢ããŸãã
ã«ãŠã³ã¿ãŒã䜿çšãããœãªã¥ãŒã·ã§ã³ã¯ç°¡åã§ãã ãã®æ±ºå®ã¯ãåŸã§è§£æ±ºããå¿
èŠãããè«çç匟ã®ãã¢ã眮ããŸãã
1ïŒãµã€ã¯ã«ãçµããããšã¯ãããŸããã 念ã®ããã«ãå¥ã®ã³ã³ãããŒã«ã«ãŠã³ã¿ãŒãå°å
¥ããŸãã念ã®ãããããšãã°50ã®æ°åã䜿çšããŸãã ããŒãããã§ã«2ã€ã®ã«ãŠã³ã¿ãŒã 解決çã¯èŠãç®ã»ã©çŸãããããŸããã
2ïŒããŒãžã®å§ãŸãã¯ç°¡åã«èšç®ã§ããŸãããããŒãžã®ãªã¹ãã®çµããè¿ãã§ã-蚱容æ°ãè¶
ããŠè¡šç€ºãããªãæ°ãäºæž¬ããå¿
èŠããããŸãã ããããäžåºŠã«ãã¹ãŠã§ã¯ãããŸããã
ããã«ãããïŒæ¡ä»¶ä»ãã§ïŒæåã®ããŒãžãããŒã¯ãããŸãã
<xsl:variable name="pn2" select="$p - floor($nL div 2)"/> <xsl:if test="$pn2 > 1"> <span class=""> <a href="{concat($url, 1)}">1</a> <xsl:if test="$pn2 > 2"> <a class="ellip" title="{floor(($pn2 +1) div 2)}" href="{concat($url, floor(($pn2 +1) div 2) )}">...</a> </xsl:if> </span> </xsl:if>
çç¥ãªã³ã¯ã§ã¯ã衚瀺ãããŠããªãééã®ã»ãŒäžå€®ã®ãªã³ã¯ãããŒã«ãããã«è¡šç€ºãããŸãã ããšãã°ããªã³ã¯ã®è¡šç€ºã¯60ããŒãžããå§ãŸããŸã-30ãŸãã¯29ã¯çç¥èšå·ä»ãã§äœæãããŸãã çªå·ã衚瀺ããªããªã³ã¯ã¯ãããç°¡æœã§ããã䟿å©ã§ãè¿œå ã®ã¹ããŒã¹ã¯ãŸã£ããå¿
èŠãããŸããã 2çªç®ãããªã³ã¯ã衚瀺ãããå Žåãæ¥åã¯è¡šç€ºãããŸããã
é²è¡
ãã©ã¡ãŒã¿ãŒã®å€æŽãéå§ããããšãã°100äžã誀ã£ãŠèšå®ããéçºè
ãã-50ã«çãã
stopãã©ã¡ãŒã¿ãŒãå
¥åããŠãååž°ã®æ°ãå¶éããŸããããã«ãããããŒãžããŒã¿ãŒã¯50åãè¶
ããå埩ãå®è¡ããŸããã
ééããããããŒãžããŒã·ã§ã³ïŒæ®µèœ7ïŒ
ãã¬ãŒã ã¯ãŒã¯ãäœæããããšãæ®ãã®ãæ©èœããç°¡åã«è¿œå ãããŸãïŒãã¡ãããéçºè
ãæ¢ã«ãã¯ãããžãŒãèªèããŠããå ŽåïŒã ãããå®èšŒããããã«ãæåŸã®ããŒãžããŒã¿ãŒã§ãæ°ããŒãžã®ééã§ãªã³ã¯ã衚瀺ããæ©èœãè¿œå ããŸãã ããã²ãŒã·ã§ã³ã«å¿
èŠãªå ŽåããããŸã-ããŒãžã§ã¯ãªãããŒãžäžã®ã¬ã³ãŒããã«ãŠã³ãããããã«å¿
èŠãªå ŽåããããŸãã ããã¯ãåãšåŸãã®ãªã³ã¯ã衚瀺ããããã«æ§æãããŠãããããããŒãžããŒã¿ãŒã®å°ãäžé©åãªäœ¿çšã«ãªããŸãããŸããã€ã³ã¿ãŒãã«å
šäœã®åºåã«å¯ŸããŠè¡šç€ºãããŸãã ãã ããæ°ããããŒãžããŒã¿ãèšè¿°ãããã誀çšã«åãããŠèª¿æŽããããã代ããã«ãé©åãªãã©ã¡ãŒã¿ãéžæãããã€ãŸãããã¢ãè¿œå ããïŒ$ n2 div 2ïŒæ¹ãç°¡åã§ãã ãã®èŠåãšè¿œå ã®ãã©ã¡ãŒã¿ãŒ
ã¹ãããã䜿çšããŠãããŒãžããŒã¿ãŒãæ©èœãå§ããŸãã
ç¶ããŸãã ãèªè
ãæ¢è£œã®ããŒãžããŒã¿ãŒãèŠãŠäœ¿çšãããå Žåã¯ã
spmbt.imtqy.com/spmbt/wk/37.20.115.43.xmlã«ãããŸãã ãã°ããŒãžã®ã¢ãã¬ã¹ãšãªã³ã¯ã¯å€æŽãããå¶ç¶ã®äžèŽã¯ã©ã³ãã ã§ãã ããã¯éçãªäŸã§ãããåžžã«9ããŒãžã«ãããããããŒãžåãæ¿ãã¯ç¡å¹ã«ãªã£ãŠããŸãã ããããäžéšã«ã¯spmbt.imtqy.com/spmbt/wk/37.20.115.43.xslãä»ããŠæ§ç¯ããã
ããŒãžããŒã¿ãŒããããŸãã ããŒãžããŒã¿ãŒã«çŽæ¥é¢é£ããè¡ïŒ
XSLTã³ãŒã <?xml version="1.0"?> <!DOCTYPE html> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> ... <div class="pagination"> : <xsl:variable name="url">#page=</xsl:variable> <xsl:variable name="p" select="/ha/page"/> <xsl:comment> </xsl:comment> <xsl:variable name="nL" select="11"/> <xsl:comment> </xsl:comment> <xsl:variable name="pLast" select="/ha/pageLast"/> <xsl:comment> ( ; , )</xsl:comment> <xsl:variable name="pn2" select="$p - floor($nL div 2)"/> <xsl:if test="$pn2 > 1"> <span class=""> <a href="{concat($url, 1)}">1</a> <xsl:if test="$pn2 > 2"> <a class="ellip" title="{floor(($pn2 +1) div 2)}" href="{concat($url, floor(($pn2 +1) div 2) )}">...</a> </xsl:if> </span> </xsl:if> <xsl:call-template name="paginate"> <xsl:with-param name="i" select="$p"/> <xsl:with-param name="nLinks" select="$nL"/> <xsl:with-param name="pLast" select="$pLast"/> <xsl:with-param name="url" select="$url"/> </xsl:call-template> <xsl:if test="string-length($pLast) =0"> <xsl:variable name="nL2" select="5"/> <xsl:variable name="step" select="10"/> <xsl:call-template name="paginate"> <xsl:with-param name="i" select="floor(($p + $nL + $step +1) div $step) * $step + floor($nL2 div 2)"/> <xsl:with-param name="nLinks" select="$nL2"/> <xsl:with-param name="pLast" select="$pLast"/> <xsl:with-param name="step" select="$step"/> <xsl:with-param name="url" select="$url"/> <xsl:with-param name="class" select="'gaps'"/> </xsl:call-template> </xsl:if> <xsl:variable name="pp2" select="$p + floor(($nL -1) div 2)"/> <xsl:if test="$pp2 < $pLast"> <span class=""> <xsl:if test="$pp2 < $pLast -1"> <a class="ellip" title="{$pLast - floor(($pLast - $pp2) div 2)}" href="{concat($url, $pLast - floor(($pLast - $pp2) div 2) )}">...</a> </xsl:if> <a href="{concat($url, $pLast)}"><xsl:value-of select="$pLast"/></a> </span> </xsl:if> </div> </body> </html> </xsl:template> <xsl:template name="paginate"> <xsl:param name="i" select="1"/> <xsl:param name="nLinks"/> <xsl:param name="pLast"/> <xsl:param name="step" select="1"/> <xsl:param name="to" select="$i + $nLinks"/> <xsl:param name="url"/> <xsl:param name="class"/> <xsl:param name="count" select="1"/> <xsl:param name="stop" select="50"/> <xsl:variable name="n2" select="floor($nLinks div 2)"/> <xsl:if test="($i < $to or $count <= $nLinks) and $stop > 0"> <xsl:if test="$i - $n2 >= 1 and $i - $n2 <= $pLast or $i - $n2 >= 1 and string-length($pLast) =0"> <span class="{concat($class,' active', number($i = $to - ceiling($nLinks div 2)))}"> <a href="{concat($url, $i - $n2)}"> <xsl:value-of select="$i - $n2"/> </a> </span> </xsl:if> <xsl:call-template name="paginate"> <xsl:with-param name="i" select="$i + $step"/> <xsl:with-param name="to" select="$to"/> <xsl:with-param name="nLinks" select="$nLinks"/> <xsl:with-param name="pLast" select="$pLast"/> <xsl:with-param name="step" select="$step"/> <xsl:with-param name="url" select="$url"/> <xsl:with-param name="class" select="$class"/> <xsl:with-param name="count" select="$count + number($i - $n2 >= 1 and $i - $n2 <= $pLast or $i - $n2 >= 1 and string-length($pLast) =0)"/> <xsl:with-param name="stop" select="$stop - 1"/> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet>
ã ã¡ã€ã³ã³ãŒãã¯85è¡ããããŸãã-ããã¯ã2ãµã€ã¯ã«ãå®è¡ããããšããäºå®ã«ãããããããè¯ãçµæã§ã-ããŒãžããã³æ°åããŒãžã§ãäžå€®ãªã³ã¯ã®æ¥åãå«ãŸããŠããŸãã IE8 +ããã³ãã®ä»ã®ææ°ã®ãã©ãŠã¶ãŒã§ãµããŒããããŠããŸãã