diff -r a48c49030593 MoinMoin/formatter/text_docbook.py
--- a/MoinMoin/formatter/text_docbook.py	Sun Mar 09 20:09:31 2008 +0100
+++ b/MoinMoin/formatter/text_docbook.py	Wed Mar 12 14:43:00 2008 +0100
@@ -360,22 +360,26 @@ class Formatter(FormatterBase):
     def pagelink(self, on, pagename='', page=None, **kw):
         FormatterBase.pagelink(self, on, pagename, page, **kw)
 
-        return self.interwikilink(on, 'Self', pagename)
+        return self.interwikilink(on, 'Self', pagename, **kw)
 
     # FIXME: This is even more crappy
     def interwikilink(self, on, interwiki='', pagename='', **kw):
         if not on:
-            return self.url(on, kw)
+            return self.url(on, **kw)
 
         wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_interwiki(self.request, interwiki, pagename)
         wikiurl = wikiutil.mapURL(self.request, wikiurl)
         href = wikiutil.join_wiki(wikiurl, wikitail)
 
-        return self.url(on, href)
+        return self.url(on, href, **kw)
 
     def url(self, on, url=None, css=None, **kw):
-        return self._handleNode("ulink", on, (('url', url), ))
-
+        # Handle internal references as docbook <link>, otherwise <ulink>
+        if kw.has_key("anchor"):
+            return self._handleNode("link", on, (('linkend', kw["anchor"]), ))
+        else:
+            return self._handleNode("ulink", on, (('url', url), ))
+    
     def anchordef(self, name):
         self._handleNode("anchor", True, (('id', name), ))
         self._handleNode("ulink", False)
