We use lots of olinks in our docbook. Olinks are a fabulous advance
in cross-referencing (as explained in Bob Stayton's The Complete
Guide) but we have one difficulty with them: it's a pain for authors
to look up target attributes (targetdoc and targetptr). They're are
scattered throughout all our olink databases, and reading raw xml
will make you blind.
So in case anybody else can use it, here's my low-tech solution, as
usual standing on the shoulders of giants, taking advantage of XXE's
CSS formatting.
Snip the lines below and save as sitemap.css:
/***************************************************************
sitemap.css
This CSS renders a docbook sitemap file in XML Mind in a form-like
format. A sitemap catalogs olink targets across documents for
DocBook cross-referencing. Olink targets can be included as olink
databases generated by DocBook, or entered manually in the sitemap.
I think the formatting makes the sitemap more useable than the raw XML
for authors looking up olink targets. That's the intent anyway.
To use it, simply edit your sitemap and add a call to this file under
the XML declaration, like this:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="sitemap.css"?>
Then copy this file to where the href points, and open your
sitemap XML file in XXE. Note that this file uses some non-standard
XXE-based CSS to display attributes, so it won't work correctly in a
web browser.
Note that XML Mind displays olink databases that are included in your
sitemap. As with any master document in XXE, a tinted background
indicates a referenced, non-editable document; local content
and manual document entries have a white background and can be edited.
***************************************************************/
targetsetinfo {
display:block;
padding: 5px;
color: gray;
}
/*
DIR rules
*/
dir:before {
content: "<dir>\A"attributes();
margin-top: 20px;
margin-left: 20px;
font-size:150%;
font-weight: bold;
color: red;
}
dir::attribute() {
display:block;
attribute-content-left: attribute-label() ":";
attribute-content-middle: value-editor(attribute, attribute());
show-attribute: always;
}
/*
dir::attribute(name) {
attribute-content-left: "name: ";
}
*/
dir {
display:block;
padding: 5px;
margin: 5px;
border: 2px dotted green;
}
/*
DOCUMENT rules
*/
document:before {
content:"<document>\A"attributes();
margin-top: 20px;
margin-left: 20px;
font-size:120%;
font-weight: bold;
color: green;
}
document::attribute() {
attribute-content-left: attribute-label() ":";
attribute-content-middle: value-editor(attribute, attribute());
show-attribute: always;
}
document::attribute(targetdoc) {
attribute-content-left: "Targetdoc:";
}
document {
display:block;
padding: 5px;
margin: 5px;
margin-left: 10px;
}
/*
DIV rules
*/
div:before {
content:"<div>\A" attributes();
margin-top: 20px;
margin-left: 20px;
font-size:100%;
font-weight: bold;
color: blue;
}
div::attribute() {
attribute-content-left: attribute-label() ":";
attribute-content-middle: value-editor(attribute, attribute());
show-attribute: always;
}
div::attribute(number) {
show-attribute: never;
/* attribute-content-left: "Number:";*/
}
div {
display:block;
padding: 5px;
margin: 5px;
margin-left: 10px;
border: 1px solid black;
}
div {display:block;}
ttl:before {
content: "Ttl: ";
color: blue;
font-size:100%;
font-weight: bold;
}
ttl {display:block;}
xreftext:before {
content: "Xreftext: ";
color: blue;
font-size:100%;
font-weight: bold;
}
xreftext {display:block;}