DocBook NG: The “Frangelico” Release

Volume 7, Issue 185; 18 Oct 2004; last modified 08 Oct 2010

This release uses xml:id and XLink, including some support for extended links, and fixes a couple of bugs. I thought it made sense to get another release out before XML 2004.

This is the sixth release of DocBook NG.

With XML 2004 coming up, I thought I’d get another release out so the DocBook crowd has something to argue about in the bar.

To that end, I’m sure what we need is a little controversy, so I’ve switched to using XLink. And to make it a more interesting, I’ve added an extended link element. This, for example, is one of my test cases:

<article xmlns=""
<title>XLink Test</title>
  <locator xl:label="person" xl:href="#xperson"/>
  <locator xl:label="website" xl:href=""/>
  <locator xl:label="otherwebsite" xl:href=""/>
  <arc xl:from="person" xl:to="website" xl:title="To Website"/>
  <arc xl:from="person" xl:to="otherwebsite" xl:title="To Other Website"/>

<para xml:id='p4'>This is an
<phrase xl:href="">inline link</phrase>.

<para xml:id='p5'>This is an <phrase xml:id="xperson">out-of-line link</phrase>.


I have a not-yet-published stylesheet that does “the right thing”. Sort of.

Here’s a summary of all the user-visible changes in the “Frangelico” release:

  • Use xml:id .

  • Use XLink.

  • A link is required on biblioref (not optional).

  • The numeration attribute on orderedlist is an enumeration (not text).

<plug role='shameless'>And if all this DocBook stuff is just too confusing, there’s probably still time to sign up for my tutorial. </plug>


I was big fan of XLink in past, but now I don't like it much because it depends on #FIXED attributes in DTD which is now considered bad thing and it is not supported in Relax NG for example. If I correctly understand XLink specification each simple link must have attribute xlink:type="simple" present on a corresponding linking element. But in RNG you can't specify this default value in schema so you should write

<phrase xl:href="" xl:type="simple">inline link</phrase>
<phrase xl:href="">inline link</phrase>
—Posted by Jirka Kosek on 18 Oct 2004 @ 03:44 UTC #

The content model of attribution is "(db._text | db.personname)", but I would rather have it "(db._text | db.personname)*", so it can contain both a personname and some other text, such as:

<attribution><personname>Rasmus Kaj</personname>, in a comment on this blog</attribution>

It there a reason for only accepting either but not both? Or is it just a + sign missing on line 1005 of pool.rnc?

—Posted by Rasmus Kaj on 19 Oct 2004 @ 09:12 UTC #

Taking a peek at how attribution is defined in the DTD, I think the + sign is missing. Fixed (locally).

—Posted by Norman Walsh on 20 Oct 2004 @ 07:53 UTC #

Thank you! I hope I didn't cut of any XLink comments, as I would be much interested to see what comes out of that ... One thing that I would like to see, and that I don't think XLink provides, is the ability to use "link shortcuts". Example:

I spend my time at a university, and thus sometimes I have reason to link to course info. But a link into the course catalog is a 100-character string that I can't keep in my head. But all courses has a unique id of six characters, e.g. FG4711. So I put href="course:FG4711" in my documents and have my xslt sort it out. A more standardized way to manage that would be nice.

—Posted by Rasmus Kaj on 23 Oct 2004 @ 12:23 UTC #