OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: DOCBOOK-APPS: Converting man page references to links


Hi guys,

Like many projects, we have a CGI script that converts man pages to HTML
for handy viewing in a browser.

Since DocBook can mark up man page references, I've just crufted together
the following DSSSL to automate generating links.  Given

    <citerefentry>
      <refentrytitle>ls</refentrytitle>
      <manvolnum>1</manvolnum>
    </citerefentry>

it outputs

    <a href="http://www.FreeBSD.org/cgi/man.cgi?ls(1)">ls(1)</a>

(in conjunction with Norm's stylesheets.

------------ 8< ------------ 8< ------------ 8< ------------ 8< ------------
<!-- Convert <citerefentry> into links to man.cgi -->

(element citerefentry
  (let ((ref (select-elements (descendants (current-node))
                              (normalize "refentrytitle")))
        (vol (select-elements (descendants (current-node))
                              (normalize "manvolnum"))))
    (make element gi: "a"
          attributes: (list (list "href" (string-append
                                  "http://www.FreeBSD.org/cgi/man.cgi?"
                                  (data (node-list-first ref))
                                  "("
                                  (data (node-list-first vol)) ")")))
      (process-children))))
------------ 8< ------------ 8< ------------ 8< ------------ 8< ------------

A few things:

  1.  There are probably more elegant ways to achieve this.  Not being a
      DSSSL expert by any stretch of the imagination I welcome improvements.

  2.  Who else has manpage CGIs like this?  How can we go about making this
      a more general function?

Ideally, I'd envisage something whereby you'd do something like

   (define $mancgi-template$ "http://www.FreeBSD.org/man.cgi?%s(%d)")

and the procedure would fill in %s and %d in the template.  Each of the 
various documentation projects (with their own CGI script and calling 
conventions) would then just redefine $mancgi-template$ as necessary.

Thoughts?

N
-- 
Internet connection, $19.95 a month.  Computer, $799.95.  Modem, $149.95.
Telephone line, $24.95 a month.  Software, free.  USENET transmission,
hundreds if not thousands of dollars.  Thinking before posting, priceless.
Somethings in life you can't buy.  For everything else, there's MasterCard.
  -- Graham Reed, in the Scary Devil Monastery


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC