[prev in list] [next in list] [prev in thread] [next in thread]
List: xml-dev
Subject: [xml-dev] linking
From: "Bruce D'Arcus" <bdarcus () myrealbox ! com>
Date: 2004-12-27 18:08:05
Message-ID: 419353A7-5832-11D9-B728-000A95B10832 () myrealbox ! com
[Download RAW message or body]
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 })*
}
}
-----------------------------------------------------------------
The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
initiative of OASIS <http://www.oasis-open.org>
The list archives are at http://lists.xml.org/archives/xml-dev/
To subscribe or unsubscribe from this list use the subscription
manager: <http://www.oasis-open.org/mlmanage/index.php>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic