[
Lists Home |
Date Index |
Thread Index
]
I've been working on some projects for bibliographic and citation
coding and formatting, and was wondering if people have feedback on one
little part of that: linking the citation to the bibliographic record.
OK, here's what the new DocBook biblioref code looks like:
<citation>
<biblioref linkend="doe99a" unit="page" begin="23" end="24"/>
</citation>
Now, here's an example from a small standalone schema recently approved
for inclusion in OpenOffice, but which could also be embedded in other
document formats, like WordML.
<cite:citation>
<cite:citation-source>
<!-- cite:key currently serves the same role as docbook's linkend, but
is defined as a token -->
<cite:biblioref cite:key="doe99a">
<cite:detail cite:units="pages" cite:begin="23" cite:end="24"/>
</cite:biblioref>
</cite:citation-source>
<cite:citation-body>
<span class="citation">(Doe, 1999: 23-24)</span>
</cite:citation-body>
</cite:citation>
Now, the issue:
The linkend attribute in DocBook is defined as an idref. However, it's
not necessarily the case that one would actually include the referent
in the document. Indeed, in my stylesheets, I assume that data is
external to the document: either in a flat file, or in some sort of
database (I use http with the doc() function to communicate with the
eXist XML DB right now).
Basically, I just want the citation code to point to a record id, but I
want where that record gets found to be configured in the xslt code.
I'd also like a standardized way to do this.
So is there a better way to code these pointers? Perhaps using xlink?
I paste the RELAX NG schema below. It's been approved, but I'm pretty
sure I could make minor changes.
Bruce
default namespace cite = "http://purl.org/NET/xbiblio/cite"
start = citation-element
## A citation consists of two elements; one the structural source data
## and the other the presentational display.
citation-element = element cite:citation {
citation-source-element,
citation-body-element?
}
## The source element consists of one-or-more biblioref elements, which
## are the references within the citation. For example, the citation
## (Doe, 1999; Smith, 2000) contains two references.
citation-source-element = element cite:citation-source {
biblioref-element+
}
## In fields across the social sciences and humanities, it is
## common for citations to include further detail, including
## more specific point citations (for example, page numbers)
## as well as captions. We allow more than one detail element
## to allow for coding such as (Doe, 1999: pages 1, 2, 3-5) or
## (Doe, 1999: page 2, paragraph 3).
biblioref-element = element cite:biblioref {
detail-element*,
caption-element*,
biblioref-attlist
}
## Key is the pointer to the bibliographic record ID.
biblioref-attlist &= attribute cite:key { token }
## The detail element captures point citation information
## such as cited page numbers.
detail-element = element cite:detail { detail-attlist }
detail-attlist = attribute cite:begin { xsd:string },
attribute cite:end { xsd:string }?,
attribute cite:units {
"chapters"
| "figures"
| "formulas"
| "lines"
| "pages"
| "paragraphs"
| "parts"
| "sections"
}
## For examples such as (for more on this, see Doe, 1999).
caption-element = element cite:caption {
caption-attlist,
cite.text-content
}
caption-attlist = attribute cite:position { "before" | "after" }
## The element to contain the rendered code is uncontrolled.
citation-body-element = element cite:citation-body { cite.text-content }
cite.text-content =
element * {
mixed {
(cite.text-content
| attribute * { text })*
}
}
|