Changeset 310:35e5bb9d0719 in livinglogic.python.www for site/Python_xmlns.py

Show
Ignore:
Timestamp:
01/04/05 19:17:05 (15 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Make sure that keywords are unique.

Add antother attribute linktitle to page that is used on all links to
other pages in the navigation.

Add u-prefix to keywords.

Add linktitle to most of the pages.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • site/Python_xmlns.py

    r309 r310  
    2020            page = self 
    2121            while page is not None: 
    22                 keywords[:0] = page.inheritablekeywords 
     22                for keyword in page.inheritablekeywords: 
     23                    if keyword not in keywords: 
     24                        keywords.append(keyword) 
    2325                page = page.parent 
    2426            return keywords 
     
    8082        children = [] 
    8183        index = 0 
    82         while 1: 
     84        while True: 
    8385            try: 
    8486                children.append(self.getChildByIndex(index)) 
     
    152154        self.localkeywords = [] 
    153155        self.inheritablekeywords = [] 
     156        self.linktitle = None 
    154157        self.description = None 
    155158        for (k, v) in attrs.items(): 
     
    168171            elif k=="inheritablekeywords": 
    169172                self.inheritablekeywords = v 
     173            elif k=="linktitle": 
     174                self.linktitle = u" ".join(v.strip().split()) 
    170175            elif k=="description": 
    171176                self.description = u" ".join(v.strip().split()) 
     
    247252            subheader=u"All versions for download", 
    248253            url=u"root:core/Download.html", 
    249             localkeywords=["download", "file", "archive"], 
     254            localkeywords=[u"download", u"file", u"archive"], 
     255            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    250256        ), 
    251257        XISTPage(u"history", 
     
    255261            subheader=u"The development history", 
    256262            url=u"root:core/History.html", 
    257             localkeywords=["history", "changes", "version"], 
     263            localkeywords=[u"history", u"changes", u"version"], 
     264            linktitle=u"ChangeLog for ll-core", 
    258265        ), 
    259266        XISTPage(u"installation", 
     
    263270            subheader=u"Requirements and installation", 
    264271            url=u"root:core/Installation.html", 
    265             localkeywords=["installation", "distutils"], 
     272            localkeywords=[u"installation", u"distutils"], 
    266273        ), 
    267274        crumb=u"Core", 
     
    270277        subheader=u"Common utilities", 
    271278        url=u"root:core/index.html", 
    272         inheritablekeywords=["Python", "package", "utilities", "decorator", "property", "module", "namespace"], 
     279        inheritablekeywords=[u"Python", u"package", u"utilities", u"decorator", u"property", u"module", u"namespace"], 
     280        linktitle=u"Package ll: Misc utility functions and classes", 
    273281    ), 
    274282    PythonSourcePage(u"xist", 
     
    280288            url=u"root:xist/Examples.html", 
    281289            localkeywords=[], 
    282             description=u""" 
    283             XIST examples: Parsing/creating/modifying XML. Traversing XML trees. 
    284             """ 
     290            linktitle=u"XIST examples: Parsing/creating/modifying XML. Traversing XML trees." 
    285291        ), 
    286292        XISTPage(u"howto", 
     
    291297            url=u"root:xist/Howto.html", 
    292298            localkeywords=[], 
    293             description=u""" 
     299            linktitle=u""" 
    294300            A quick tour of XIST: Explains parsing/generating XML files, 
    295301            XML transformations via XIST classes and other basic concepts. 
     
    302308            subheader=(abbr.xist(), u" core classes"), 
    303309            url=u"root:xist/xsc/index.html", 
    304             description=u""" 
    305             Module ll.xist.xsc: XIST core classes. 
    306             """ 
     310            linktitle=u"Module ll.xist.xsc: XIST core classes." 
    307311        ), 
    308312        PythonSourcePage(u"ns", 
     
    362366                subheader=u"Namespace module implementing conditional elements (if, else, etc.)", 
    363367                url=u"root:xist/ns/cond/index.html", 
    364                 description=u""" 
    365                 Module ll.xist.ns.cond: Namespace implementing conditional elements. 
    366                 """, 
     368                linktitle=u"Module ll.xist.ns.cond: Namespace implementing conditional elements", 
    367369            ), 
    368370            PythonSourcePage(u"code", 
     
    372374                subheader=(u"Namespace module for embedding Python code in ", abbr.xml()), 
    373375                url=u"root:xist/ns/code/index.html", 
    374                 description=u""" 
    375                 Module ll.xist.ns.code: Namespace for embedding Python code in XML. 
    376                 """, 
     376                linktitle=u"Module ll.xist.ns.code: Namespace for embedding Python code in XML", 
    377377            ), 
    378378            PythonSourcePage(u"form", 
     
    382382                subheader=u"Namespace module implementing form related elements", 
    383383                url=u"root:xist/ns/form/index.html", 
    384                 description=u""" 
    385                 Module ll.xist.ns.form: Namespace implementing form related elements. 
    386                 """, 
     384                linktitle=u"Module ll.xist.ns.form: Namespace implementing form related elements", 
    387385            ), 
    388386            PythonSourcePage(u"php", 
     
    392390                subheader=(u"Namespace module for PHP processing instructions"), 
    393391                url=u"root:xist/ns/php/index.html", 
    394                 description=u""" 
    395                 Module ll.xist.ns.php: Namespace for PHP processing instructions. 
    396                 """, 
     392                linktitle=u"Module ll.xist.ns.php: Namespace for PHP processing instructions", 
    397393            ), 
    398394            PythonSourcePage(u"jsp", 
     
    402398                subheader=(u"Namespace module for embedding ", abbr.jsp(), u" code as processing instructions"), 
    403399                url=u"root:xist/ns/jsp/index.html", 
    404                 description=u""" 
    405                 Module ll.xist.ns.jsp: Namespace for JSP code as processing instructions. 
    406                 """, 
     400                linktitle=u"Module ll.xist.ns.jsp: Namespace for JSP code as processing instructions", 
    407401            ), 
    408402            PythonSourcePage(u"meta", 
     
    412406                subheader=u"Namespace module containing meta information elements", 
    413407                url=u"root:xist/ns/meta/index.html", 
    414                 description=u""" 
    415                 Module ll.xist.ns.meta: Namespace containing meta information elements. 
    416                 """, 
     408                linktitle=u"Module ll.xist.ns.meta: Namespace containing meta information elements", 
    417409            ), 
    418410            PythonSourcePage(u"ruby", 
     
    422414                subheader=u"Namespace implementing the W3C ruby draft", 
    423415                url=u"root:xist/ns/ruby/index.html", 
    424                 description=u""" 
    425                 Module ll.xist.ns.ruby: Namespace implementing the W3C ruby draft. 
    426                 """, 
     416                linktitle=u"Module ll.xist.ns.ruby: Namespace implementing the W3C ruby draft", 
    427417            ), 
    428418            PythonSourcePage(u"specials", 
     
    432422                subheader=u"Common useful elements", 
    433423                url=u"root:xist/ns/specials/index.html", 
    434                 description=u""" 
    435                 Module ll.xist.ns.specials: Common useful elements. 
    436                 """, 
     424                linktitle=u"Module ll.xist.ns.specials: Common useful elements", 
    437425            ), 
    438426            PythonSourcePage(u"htmlspecials", 
     
    442430                subheader=(u"Common useful elements for ", abbr.html(), u" generation"), 
    443431                url=u"root:xist/ns/htmlspecials/index.html", 
    444                 description=u""" 
    445                 Module ll.xist.ns.htmlspecials: Common useful elements for HTML generation. 
    446                 """, 
     432                linktitle=u"Module ll.xist.ns.htmlspecials: Common useful elements for HTML generation", 
    447433            ), 
    448434            PythonSourcePage(u"doc", 
     
    452438                subheader=u"Namespace module for automated documentation generation", 
    453439                url=u"root:xist/ns/doc/index.html", 
    454                 description=u""" 
    455                 Module ll.xist.ns.doc: Namespace for automated documentation generation. 
    456                 """, 
     440                linktitle=u"Module ll.xist.ns.doc: Namespace for automated documentation generation", 
    457441            ), 
    458442            PythonSourcePage(u"css", 
     
    462446                subheader=(u"Namespace module implementing ", abbr.css(), u" as ", abbr.xml(), u" elements"), 
    463447                url=u"root:xist/ns/css/index.html", 
     448                linktitle=u"Module ll.xist.ns.css: Implements CSS as an XIST namespace", 
    464449            ), 
    465450            PythonSourcePage(u"cssspecials", 
     
    469454                subheader=(u"Module implementing some useful elements for ", abbr.css()), 
    470455                url=u"root:xist/ns/cssspecials/index.html", 
     456                linktitle=u"Module ll.xist.ns.cssspecials: Useful elements for CSS", 
    471457            ), 
    472458            PythonSourcePage(u"struts_html", 
     
    476462                subheader=(u"Mamespace module implementing the the Struts ", abbr.html(), u" tags"), 
    477463                url=u"root:xist/ns/struts_html/index.html", 
     464                linktitle=u"Module ll.xist.ns.struts_html: Namespace for Jakarta Struts HTML tags", 
    478465            ), 
    479466            PythonSourcePage(u"struts_config", 
     
    483470                subheader=(u"Namespace module for Struts configuration files"), 
    484471                url=u"root:xist/ns/struts_config/index.html", 
     472                linktitle=u"Module ll.xist.ns.struts_html: Namespace for Jakarta Struts configuration file tags", 
    485473            ), 
    486474            crumb=u"ns", 
     
    489477            subheader=u"Subpackage containing namespace modules", 
    490478            url=u"root:xist/ns/index.html", 
    491             description=u""" 
    492             Package ll.xist.ns: Contains namespace modules. 
    493             """, 
     479            linktitle=u"Package ll.xist.ns: Contains namespace modules", 
    494480        ), 
    495481        PythonSourcePage(u"parsers", 
     
    499485            subheader=u"Module with classes for parsing files", 
    500486            url=u"root:xist/parsers/index.html", 
     487            linktitle=u"Module ll.xist.parsers: Parsing XML", 
    501488        ), 
    502489        PythonSourcePage(u"converters", 
     
    506493            subheader=u"Module with the converter class", 
    507494            url=u"root:xist/converters/index.html", 
     495            linktitle=u"Module ll.xist.converters: Configuring the XML transformation", 
    508496        ), 
    509497        PythonSourcePage(u"presenters", 
     
    513501            subheader=u"Module with classes for printing trees", 
    514502            url=u"root:xist/presenters/index.html", 
     503            linktitle=u"Module ll.xist.presenters: Screen output of XML trees", 
    515504        ), 
    516505        PythonSourcePage(u"publishers", 
     
    520509            subheader=u"Module with classes for publishing trees", 
    521510            url=u"root:xist/publishers/index.html", 
     511            linktitle=u"Module ll.xist.publishers: XML output", 
    522512        ), 
    523513        PythonSourcePage(u"sims", 
     
    527517            subheader=u"Simple schema validation", 
    528518            url=u"root:xist/sims/index.html", 
     519            linktitle=u"Module ll.xist.sims: Simple schema validation", 
    529520        ), 
    530521        PythonSourcePage(u"xfind", 
     
    534525            subheader=u"Tree iteration and filtering", 
    535526            url=u"root:xist/xfind/index.html", 
     527            linktitle=u"Module ll.xist.xfind: Tree iteration and filtering", 
    536528        ), 
    537529        PythonSourcePage(u"errors", 
     
    541533            subheader=u"Module containing exception classes", 
    542534            url=u"root:xist/errors/index.html", 
     535            linktitle=u"Module ll.xist.errors: XIST exception classes", 
    543536        ), 
    544537        XISTPage(u"download", 
     
    548541            subheader=u"All versions for download", 
    549542            url=u"root:xist/Download.html", 
    550             localkeywords=["download", "file", "archive"], 
     543            localkeywords=[u"download", u"file", u"archive"], 
     544            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    551545        ), 
    552546        XISTPage(u"history", 
     
    556550            subheader=u"The development history", 
    557551            url=u"root:xist/History.html", 
    558             localkeywords=["history", "changes", "version"], 
     552            localkeywords=[u"history", u"changes", u"version"], 
     553            linktitle=u"ChangeLog for XIST", 
    559554        ), 
    560555        XISTPage(u"installation", 
     
    564559            subheader=u"Requirements, installation and configuration", 
    565560            url=u"root:xist/Installation.html", 
    566             localkeywords=["installation", "distutils"], 
     561            localkeywords=[u"installation", u"distutils"], 
     562            linktitle=u"How to install and configure XIST", 
    567563        ), 
    568564        XISTPage(u"migration", 
     
    573569            url=u"root:xist/Migration.html", 
    574570            localkeywords=[], 
     571            linktitle=u"How to update your code to new versions of XIST", 
    575572        ), 
    576573        XISTPage(u"mailinglists", 
     
    580577            subheader=u"How to subscribe to the mailing lists", 
    581578            url=u"root:xist/Mailinglists.html", 
    582             localkeywords=["mailing list", "list", "posting", "discussion", "announcement"], 
     579            localkeywords=[u"mailing list", u"list", u"posting", u"discussion", u"announcement"], 
     580            linktitle=u"How to subscribe to the XIST mailing lists", 
    583581        ), 
    584582        crumb=abbr.xist(), 
     
    587585        subheader=(u"An extensible ", abbr.html(), u"/", abbr.xml(), u" generator"), 
    588586        url=u"root:xist/index.html", 
    589         inheritablekeywords=[abbr.xist(), abbr.xml(), "transformation", abbr.xsl(), "hsc"], 
    590         description=u""" 
    591         Package ll.xist: An extensible XML/HTML generator. 
    592         """ 
     587        inheritablekeywords=[abbr.xist(), abbr.xml(), u"transformation", abbr.xsl(), u"hsc"], 
     588        linktitle=u"Package ll.xist: An extensible XML/HTML generator", 
    593589    ), 
    594590    PythonSourcePage(u"url", 
     
    607603            subheader=u"All versions for download", 
    608604            url=u"root:url/Download.html", 
    609             localkeywords=["download", "file", "archive"], 
     605            localkeywords=[u"download", u"file", u"archive"], 
     606            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    610607        ), 
    611608        XISTPage(u"history", 
     
    615612            subheader=u"The development history", 
    616613            url=u"root:url/History.html", 
    617             localkeywords=["packages", "history", "changes", "version"], 
     614            localkeywords=[u"packages", u"history", u"changes", u"version"], 
     615            linktitle=u"ChangeLog for ll-url", 
    618616        ), 
    619617        XISTPage(u"installation", 
     
    623621            subheader=u"Requirements and installation", 
    624622            url=u"root:url/Installation.html", 
    625             localkeywords=["installation", "distutils"], 
     623            localkeywords=[u"installation", u"distutils"], 
    626624        ), 
    627625        crumb=u"url", 
     
    630628        subheader=(u"Module implementing ", abbr.url(), u"s"), 
    631629        url=u"root:url/index.html", 
     630        linktitle=u"Module ll.url: RFC 2396 compliant URLs", 
    632631    ), 
    633632    PythonSourcePage(u"make", 
     
    638637            subheader=u"All versions for download", 
    639638            url=u"root:make/Download.html", 
    640             localkeywords=["packages", "download", "file", "archive"], 
     639            localkeywords=[u"packages", u"download", u"file", u"archive"], 
     640            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    641641        ), 
    642642        XISTPage(u"history", 
     
    646646            subheader=u"The development history", 
    647647            url=u"root:make/History.html", 
    648             localkeywords=["packages", "history", "changes", "version"], 
     648            localkeywords=[u"packages", u"history", u"changes", u"version"], 
     649            linktitle=u"ChangeLog for ll-make", 
    649650        ), 
    650651        XISTPage(u"installation", 
     
    654655            subheader=u"Requirements and installation", 
    655656            url=u"root:make/Installation.html", 
    656             localkeywords=["installation", "distutils"], 
     657            localkeywords=[u"installation", u"distutils"], 
    657658        ), 
    658659        XISTPage(u"migration", 
     
    669670        subheader=u"Object oriented make replacement", 
    670671        url=u"root:make/index.html", 
    671         localkeywords=["make", "build", "dependencies", "development", "target"], 
     672        localkeywords=[u"make", u"build", u"dependencies", u"development", u"target"], 
     673        linktitle=u"Module ll.make: Object oriented make replacement", 
    672674    ), 
    673675    PythonSourcePage(u"color", 
     
    678680            subheader=u"All versions for download", 
    679681            url=u"root:color/Download.html", 
    680             localkeywords=["packages", "download", "file", "archive"], 
     682            localkeywords=[u"packages", u"download", u"file", u"archive"], 
     683            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    681684        ), 
    682685        XISTPage(u"history", 
     
    686689            subheader=u"The development history", 
    687690            url=u"root:color/History.html", 
    688             localkeywords=["packages", "history", "changes", "version"], 
     691            localkeywords=[u"packages", u"history", u"changes", u"version"], 
     692            linktitle=u"ChangeLog for ll-color", 
    689693        ), 
    690694        XISTPage(u"installation", 
     
    694698            subheader=u"Requirements and installation", 
    695699            url=u"root:color/Installation.html", 
    696             localkeywords=["installation", "distutils"], 
     700            localkeywords=[u"installation", u"distutils"], 
    697701        ), 
    698702        crumb=u"Color", 
     
    701705        subheader=u"RGB color values and color model conversion", 
    702706        url=u"root:color/index.html", 
    703         localkeywords=["RGB", "red", "green", "blue", "HSV", "HSB", "HSL", "HLS", "hue", "saturation", "value", "brightness", "luminance"], 
     707        localkeywords=[u"RGB", u"red", u"green", u"blue", u"HSV", u"HSB", u"HSL", u"HLS", u"hue", u"saturation", u"value", u"brightness", u"luminance"], 
     708        linktitle=u"Module ll.color: RGB color values and color model conversion", 
    704709    ), 
    705710    PythonSourcePage(u"sisyphus", 
     
    710715            subheader=u"All versions for download", 
    711716            url=u"root:sisyphus/Download.html", 
    712             localkeywords=["download", "file", "archive"], 
     717            localkeywords=[u"download", u"file", u"archive"], 
     718            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    713719        ), 
    714720        XISTPage(u"history", 
     
    718724            subheader=u"The development history", 
    719725            url=u"root:sisyphus/History.html", 
    720             localkeywords=["history", "changes", "version"], 
     726            localkeywords=[u"history", u"changes", u"version"], 
     727            linktitle=u"ChangeLog for ll-sisyphus", 
    721728        ), 
    722729        crumb=u"Sisyphus", 
     
    725732        subheader=u"Writing cron jobs with Python", 
    726733        url=u"root:sisyphus/index.html", 
    727         inheritablekeywords=["packages", "Sisyphus", "cron", "job"], 
     734        inheritablekeywords=[u"packages", u"Sisyphus", u"cron", u"job"], 
     735        linktitle=u"Module ll.sisyphus: Writing cron jobs with Python", 
    728736    ), 
    729737    PythonSourcePage(u"ansistyle", 
     
    734742            subheader=u"All versions for download", 
    735743            url=u"root:ansistyle/Download.html", 
    736             localkeywords=["download", "file", "archive"], 
     744            localkeywords=[u"download", u"file", u"archive"], 
     745            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    737746        ), 
    738747        XISTPage(u"history", 
     
    742751            subheader=u"The development history", 
    743752            url=u"root:ansistyle/History.html", 
    744             localkeywords=["history", "changes", "version"], 
     753            localkeywords=[u"history", u"changes", u"version"], 
     754            linktitle=u"ChangeLog for ll-ansistyle", 
    745755        ), 
    746756        XISTPage(u"installation", 
     
    750760            subheader=u"Requirements and installation", 
    751761            url=u"root:ansistyle/Installation.html", 
    752             localkeywords=["installation", "distutils"], 
     762            localkeywords=[u"installation", u"distutils"], 
    753763        ), 
    754764        crumb=u"ANSIStyle", 
     
    757767        subheader=u"ANSI colors for output streams and strings", 
    758768        url=u"root:ansistyle/index.html", 
    759         inheritablekeywords=["packages", "ANSIStyle", abbr.ansi(), "escape", "color", "console"], 
     769        inheritablekeywords=[u"packages", u"ANSIStyle", abbr.ansi(), u"escape", u"color", u"console"], 
     770        linktitle=u"Module ll.ansistyle: ANSI colors for output streams and strings", 
    760771    ), 
    761772    PythonSourcePage(u"toxic", 
     
    766777            subheader=u"All versions for download", 
    767778            url=u"root:toxic/Download.html", 
    768             localkeywords=["packages", "download", "file", "archive"], 
     779            localkeywords=[u"packages", u"download", u"file", u"archive"], 
     780            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    769781        ), 
    770782        XISTPage(u"history", 
     
    774786            subheader=u"The development history", 
    775787            url=u"root:toxic/History.html", 
    776             localkeywords=["packages", "history", "changes", "version"], 
     788            localkeywords=[u"packages", u"history", u"changes", u"version"], 
     789            linktitle=u"ChangeLog for ll-toxic", 
    777790        ), 
    778791        XISTPage(u"installation", 
     
    782795            subheader=u"Requirements and installation", 
    783796            url=u"root:toxic/Installation.html", 
    784             localkeywords=["installation", "distutils"], 
     797            localkeywords=[u"installation", u"distutils"], 
    785798        ), 
    786799        crumb=u"Toxic", 
     
    789802        subheader=(u"Generate Oracle functions from PL/SQL embedded in ", abbr.xml()), 
    790803        url=u"root:toxic/index.html", 
    791         localkeywords=["Oracle", "user defined function", "PL/SQL", "XML", "HTML", "processing instruction", "PI", "embed"], 
     804        localkeywords=[u"Oracle", u"user defined function", u"PL/SQL", u"XML", u"HTML", u"processing instruction", u"PI", u"embed"], 
     805        linktitle=u"Module ll.toxic: Embed PL/SQL in XIST XML", 
    792806    ), 
    793807    PythonSourcePage(u"orasql", 
     
    798812            subheader=u"All versions for download", 
    799813            url=u"root:orasql/Download.html", 
    800             localkeywords=["packages", "download", "file", "archive"], 
     814            localkeywords=[u"packages", u"download", u"file", u"archive"], 
     815            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    801816        ), 
    802817        XISTPage(u"history", 
     
    806821            subheader=u"The development history", 
    807822            url=u"root:orasql/History.html", 
    808             localkeywords=["packages", "history", "changes", "version"], 
     823            localkeywords=[u"packages", u"history", u"changes", u"version"], 
     824            linktitle=u"ChangeLog for ll-orasql", 
    809825        ), 
    810826        XISTPage(u"installation", 
     
    814830            subheader=u"Requirements and installation", 
    815831            url=u"root:orasql/Installation.html", 
    816             localkeywords=["installation", "distutils"], 
     832            localkeywords=[u"installation", u"distutils"], 
    817833        ), 
    818834        crumb=u"OraSQL", 
     
    821837        subheader=u"Utilities for working with cx_Oracle", 
    822838        url=u"root:orasql/index.html", 
    823         localkeywords=["Oracle", "cx_Oracle"], 
     839        localkeywords=[u"Oracle", u"cx_Oracle"], 
     840        linktitle=u"Module ll.orasql: Utilities for cx_Oracle", 
    824841    ), 
    825842    PythonSourcePage(u"sql", 
     
    830847            subheader=u"All versions for download", 
    831848            url=u"root:sql/Download.html", 
    832             localkeywords=["packages", "download", "file", "archive"] 
     849            localkeywords=[u"packages", u"download", u"file", u"archive"], 
     850            linktitle=u"Links to Windows and Linux, source and binary distributions", 
    833851        ), 
    834852        XISTPage(u"history", 
     
    838856            subheader=u"The development history", 
    839857            url=u"root:sql/History.html", 
    840             localkeywords=["packages", "history", "changes", "version"] 
     858            localkeywords=[u"packages", u"history", u"changes", u"version"], 
     859            linktitle=u"ChangeLog for ll-sql", 
    841860        ), 
    842861        XISTPage(u"installation", 
     
    846865            subheader=u"Requirements and installation", 
    847866            url=u"root:sql/Installation.html", 
    848             localkeywords=["installation", "distutils"] 
     867            localkeywords=[u"installation", u"distutils"], 
    849868        ), 
    850869        crumb=u"SQL", 
     
    853872        subheader=(u"Simplifies generating ", abbr.sql(), u" queries"), 
    854873        url=u"root:sql/index.html", 
    855         localkeywords=["packages", "SQL", "query"] 
     874        localkeywords=[u"packages", u"SQL", u"query"], 
     875        linktitle=u"Module ll.sql: Formatting SQL queries", 
    856876    ), 
    857877    XISTPage(u"cvs", 
     
    861881        subheader=(u"Access to the ", abbr.cvs(), u" repository via ViewCVS"), 
    862882        url=u"root:cvs.html", 
    863         localkeywords=[abbr.cvs(), "development", "repository"] 
     883        localkeywords=[abbr.cvs(), u"development", u"repository"], 
     884        linktitle=u"ViewCVS view of the source code", 
    864885    ), 
    865886    crumb=u"Python software", 
     
    868889    subheader=u"Python packages and modules by LivingLogic", 
    869890    url=u"root:index.html", 
    870     inheritablekeywords=["Living", "Logic", "LivingLogic", "Bayreuth", "Python"], 
    871     localkeywords=["packages", abbr.xist(), "sql", "ansistyle", "sisyphus", "toxic", "orasql"] 
     891    inheritablekeywords=[u"Living", u"Logic", u"LivingLogic", u"Bayreuth", u"Python"], 
     892    localkeywords=[u"packages", abbr.xist(), u"sql", u"ansistyle", u"sisyphus", u"toxic", u"orasql"], 
    872893) 
    873894 
     
    893914        else: 
    894915            page = pages 
    895         e = html.a(self.content, href=page.url, title=page.description) 
     916        e = html.a(self.content, href=page.url, title=page.linktitle) 
    896917        return e.convert(converter) 
    897918 
     
    10121033                page.crumb, 
    10131034                href=page.url, 
    1014                 title=page.description, 
     1035                title=page.linktitle, 
    10151036                class_=type, 
    10161037            )