MoEML’s PDF Developer Documentation
This document is currently in draft. When it has been reviewed and proofed, it will
be
published on the site.
Please note that it is not of publishable quality yet.
MoEML’s PDF Developer Documentation
¶XSLT
files responsible for creating MoEML PDFs:
-
pdf_globals.xsl
-
createPdfs.xml
(ant application) -
add_special_styles_to_fo_master.xsl
-
get_attribute_sets_names.xsl
-
list_classes_for_pdf.xsl
-
list_fonts_for_pdf.xsl
-
list_images_for_pdf.xsl
-
xhtml5_to_fo_master.xsl
-
xhtml5_to_fo_styles_module.xsl
This documentation goes through the
XSL
and XML
files responsible for building the PDFs.¶pdf_globals.xsl
The
pdf_globals
is an XSL
file that contains the variables, parameters, and functions necessary for the creation
of every PDF. $docId
is the variable that gets the xml:id
of the document, so that we can use it to build this particular file and all of its
required components. $attSetDoc
is a variable that gets the docId-specific styling module and the master styling
module (used later to assign corresponding attribute sets as per the respective classes).
Two parameters assign the locations of necessary folders: the FO
folder and the output folder. Two other parameters get the titles of the document
at hand: one for born digital files and one for primary sources. pdf_globals
also contains a function, getAtts
, that allows us to add attributes from the class’ corresponding attribute sets, in
addition to the attributes that are unique to the class, which we retrieve from the
style element in the original HTML
source document. This function finds the appropriate attributes selected in the master
styles module, and then finds the document specific attribute sets. Attributes get
added if they were not already, and if they are already written in, they get overwritten
by the specific styling. The same function also manipulates some attributes and their
values, to accommodate the FO
restrictions, such as rem
(replaced with pt
), and the small-caps font variant, which gets a specific font-family selected for
this particular purpose.¶createPdfs.xml
createPdfs.xml
is the Ant application that builds the selected PDFs. This file runs through the
terminal application. It checks for FOP
; if it is not available it gets downloaded. If FOP
is downloaded, it checks whether or not it is up to date and updates it if need be.
Images and fonts folders are defined in properties, to be used later in retrieving
the appropriate material. The listFiles
property lists the document ids that need to be built into PDFs.The Ant application creates a list of images mentioned and used in the source documents
and then downloads said images. The same process is applied to the fonts. In addition,
the ant application runs the following targets:
-
createSpecialStylesModule
Creates a special styles module, particular to the document that is being processed. This special module contains the formatting from the<html>
/<head>
/<style>
element. -
addSpecialModulesToMaster
Adds the special module to otherXSLT
s responsible for the creation of the PDFs. -
ValidateFo
Validates the resultingFO
document. -
getSourceFileFromJenkins
Is responsible for retrieving the sourceHTML
file from our server. -
processOneFile
Is the main (though not the default) target that processes the file (docId
) in the following order: gets the file from Jenkins, creates the special styles module, adds the special module to the master module, creates the images list, copies the images, creates the fonts list, copies the fonts, creates theFO
file, creates the PDF, and finally gets the.png
of the title (cover) page (which is used in the creation of ePubs). -
createFO
Creates theXSL:FO
file from theHTML
source file, as per thedocId_xhtml5_to_fo
transformation. -
createPdf
Creates the PDF file from thedocID.fo
file using theFOP
application. -
getTitlePage
Gets the PDF’s title page in.png
format, so we can use it for the ePubs. For this we usepdftoppm
execution. -
buildFiles
Is the default target; it runsprocessOneFile
to build all the documents listed in the listFiles property.
¶add_special_styles_to_fo_master.xsl
This
XSL
transformation is designed to include a special XSL
styles module in the xhtml5_to_fo_master
. It does so by creating a variable that gets the attributes from the special styles
module. The file has templates that match onto the following elements: <div>
, <span>
, and <img>
. These templates find the classes and their corresponding attribute sets to add the
necessary attributes and their values, and apply other templates as required.¶get_attribute_sets_names.xsl
This stylesheet is a rather simple one that reads the special styles module (
docId_styles_module.xsl
) and gets the attribute sets that need to be used. It stores them in an output file
listOfSets.txt
which gets used in xhtml5_to_fo_master.xsl
.¶list_classes_for_pdf.xsl
This
XSL
transformation is designed to read the <style>
element in the HTML
file and list the styling classes needed for the particular PDF being built. It starts
by parsing the <style>
element as a string, stored in a variable ($style
). The variable $parsedClasses
stores the name of the classes so that we use them later in naming the attribute-sets.
$attribute
is the variable that has the attribute names as well as their values.The root template of this transformation creates the attribute sets corresponding
to classes mentioned in the style element of the source file. It results in a document
saved in
db/data/static/xsl
called $docId_styles_module.xsl
. The template recreates the following variables: parsedClasses
, and parsedStyle
.¶list_fonts_for_pdf.xsl
This
XSLT
is designed to read the CSS
files and list the fonts needed for the particular PDF being built. We adopt it from
the transformation designed for ePubs. The root (main) template creates a list of
fonts mentioned in the corresponding CSS
files, to be then used by the ant file to copy these fonts into the PDF container
folder. It first creates a variable that lists the css files. The files are then tokenized
in $tokenizedCss and normalized in $allCss
. The variable $parsedCssFonts
results in a document listOfFonts.txt
that contains $distinctSiteFonts
, which gets the distinct values of the $parsedCssFonts
variable.¶list_images_for_pdf.xsl
This
XSLT
reads the XHTML
and CSS
files and list the images needed for the particular PDF being built. It is very similar
in its structure to list_fonts_for_pdf.xsl
: The root template creates a list of images mentioned in the corresponding CSS
files as well as the XHTML
file, to be then used by the ant file to copy these images into the PDF container
folder. This template first creates a variable that lists the CSS
files. The files are then tokenized in $tokenizedCss
and normalized in $allCss
. The variable $parsedCssImages
results in a document listOfImages.txt
that contains $distinctSiteImages
, which gets the distinct values of the $parsedCssImages
variable. This transformation also has a few hard coded images, given that they are
not present in the CSS
or XHTML
files.¶xhtml5_to_fo_master.xsl
This
XSLT
is designed to convert a MoEML XHTML5
static site document into a PDF. It converts the document to XSL:FO
, validates the FO
, and then the calling Ant script uses FOP
to generate a PDF. This file includes the styles module xhtml5_to_fo_styles_module.xsl
(discussed below), and pfd_globals.xsl
. The root template sets up the FO
basics: four simple page masters (title page, first page, recto page, and verso page).
The sequence of pages follows. The mainpage-sequence contains the footers (title page, recto, and verso) and headers (recto and verso). The headers differ in their code as per born digital or primary source, because of the structure of their titles. The template that matches on the
<html>
element applies templates (both named and unnamed as discussed below).
-
CreateTitlePageThis template processes the metadata in the page header to get the key information. The aesthetic and stylistic components include: a background image, two flower logos (top and bottom), decorative lines (top and bottom) between which the title of the document sits, and a snippet of the agas map. The size of the title and the authors depends on the length of the title and the number of authors listed. The title page also contains the edition information (which is basically the release version at the time of the build).
-
CreateHybridTitlePageThis named template creates another title page that contains hybrid metadata, which includes the title, authors, compilers, and editors, in addition to the publication information. This template contains two conditions: one is when the document at hand is a born digital file, and the other is when it is a primary source file.
¶Unnamed Templates
-
Matches
<div>
<div>
s are transformed into<fo:blocks>
. Their ids are replicated into@id
attributes. Depending on the class attribute of the<div>
, the<fo:block>
element gets assigned the appropriate attribute set(s).<div>
s that are children or descendant of the appendix<div>
, get special attribute sets that correspond to the appendix styling of the PDF. -
Matches
<nav>
<nav>
elements are transformed into<fo:blocks>
, and their ids are copied into corresponding@id
attributes. -
Matches
<ul>
<ul>
elements are transformed into<fo:list-block>
elements. Their ids are replicated into corresponding@id
attributes.<ul>
s that are descendant of the appendix get special styling to correspond with the appendix styles. -
Matches
<ol>
<ol>
elements are transformed into<fo:list-block>
elements. Their ids are replicated into corresponding@id
attributes.<ol>
s that are descendant of the appendix get special styling to correspond with the appendix styles. -
Matches
<li>
<li>
elements are transformed into<fo:list-item>
elements. Every<fo:list-item>
contains an<fo:list-item-label>
and an<fo:list-item-body>
. Depending on their level in the list structure,<fo:list-item-label>
and<fo:list-item-body>
elements get the following attribute sets, respectively:list-item-label
andlist-item-body
,list-item-label-descendant
andlist-item-body-descendant
,list-item-label-level3
andlist-item-body-level3
,list-item-label-appendix
andlist-item-body-appendix
. In tables,<fo:list-item-label>
and<fo:list-item-body>
get attribute setslist-item-label-table
andlist-item-body-table
, respectively. The page menu<fo:list-item>
gets the attribute setpageMenu
. -
Matches
<table>
<table>
s are transformed into<fo:table>
. When the table has a class attributecontentTable
, the<fo:table>
element gets thecontentTable
attribute set. -
Matches
<thead>
<thead>
s are transformed into<fo:table-header>
elements, with attribute settable-head-td
. -
Matches
<tbody>
<tbody>
elements are transformed into<fo:table-body>
elements. -
Matches
<tr>
<tr>
elements are transformed into<fo:table-row>
elements. -
Matches
<td>
<td>
elements are transformed into<fo:table-cell>
elements.<td>
elements with parents or ancestor<thead>
elements acquire the attribute settable-head-td
; if the<td>
element has an ancestor<table>
that has attribute classcontentTable
, the<fo:table-cell>
gets the attribute setcontentTable-td
; otherwise,<fo:table-cell>
elements get thetable-cell
attribute set. -
Matches
<a>
<a>
elements are transformed into<fo:basic-links>
, with attributes:@id
(if applicable),@external-destination
or@internal-destination
for the value of the@href
attribute of the<a>
element, and color. If<href>
ends with.htm
, or containshttp
,jpg
,mp3
, the<fo:basic-link>
gets an external destination attribute. The<fo:basic-link>
also gets an@external-destination
attribute and other appropriate styling attributes, if the<a>
element has a@class
attribute that is notnoteMarker
norreturnFromNote
norlocal
. Otherwise,<fo:basic-link>
gets an@internal-destination
attribute. -
Matches
<a>
[@href[starts-with(., ‘#’)]][not(@class= ‘pilcrow’)]
This template is responsible for links that refer to ids, mostly with internal references. We use the variable$thisid
to identify the@id
of the current<a>
element. If$thisid
is not stated anywhere else in the document, then thefo:basic-link
will have an@external-destination
, with https://mapoflondon.uvic.ca/$thisid.htm. Otherwise, the<fo:basic-link>
will have an internal destination, without the #, and with the appropriate attribute sets as per the class attributes. -
Matches
<p>
<p>
elements become<fo:blocks>
. -
Matches
<span>
<span>
elements become<fo:inline>
elements. -
Matches
<strong>
<strong>
elements become<fo:block>
elements when they have a parent element<li>
, and<fo:inline>
elements otherwise. -
Matches
<pre>
<pre>
elements become<fo:block>
elements when they have a parent element<li>
, and<fo:inline>
elements otherwise. -
Matches
<q>
<q>
elements become<fo:block>
elements when they have a parent element<li>
, and<fo:inline>
elements otherwise. -
Matches
<blockquote>
<blockquote>
elements become<fo:block>
elements with theblockquote
attribute set. -
Matches
<code>
<code>
elements are transformed into<fo:inline>
elements with thecode
attribute set. -
Matches
<img>
<img>
elements are transformed into<fo:external-graphic>
elements. They all have theimages
attribute set, and when appropriate, they have an additional attribute set that corresponds to their appropriate class, includingacknowledgementImg
andsocialMediaImg
. -
Matches
<figure>
<figure>
elements are transformed into<fo:block>
elements. -
Matches
<figcaption>
<ficgaption>
elements are transformed into<fo:block>
elements. When the<figcaption>
element contains the stringshorizontal rule
orPrinter’s ornament,
the<fo:block>
element gets the attribute setfigcaption_special
; otherwise it gets the attribute setfigcaption
. -
Matches
<h1>
<h1>
elements are transformed into<fo:block>
elements. When<h1>
has a child<span>
that has a@class
attributetitlePart
, it gets both attribute setsh1
andh1TitlePart
, otherwise it only get the attribute seth1
. -
Matches
<h2>
<h2>
elements are transformed into<fo:block>
elements. When they are appendix headers, they get the attribute setappendixH2
, otherwise they get the attribute seth2
. -
Matches
<h3>
<h3>
elements are transformed into<fo:block>
elements. When they are appendix headers, they get the attribute setappendixH3
; when they are appendix list headers, they get the attribute setappendixListH3
, otherwise they get the attribute seth3
. -
Matches
<h4>
<h4>
elements are transformed into<fo:block>
elements. When they are appendix headers, they get the attribute setappendixH4
, otherwise they get the attribute seth4
. -
Matches
<br>
<br>
elements are transformed into<fo:block>
elements. -
Matches
<hr>
[Primary Source Element]<hr>
elements are transformed into<fo:leader>
elements, with@id
attributes when appropriate.
This transformation is also responsible for removing the following components from
the document: the top banner,
See XML,
More Info,blackletter typeface and toggle, script elements,
Send Feedback,the footer menu, the info popup, document mentions, person’s contributions, person’s mentions, the citation header, facsimile figures, links to
agas.css
and agas_embedded.css
from the header, pilcrow (¶) links, and social media logos. It also replaces lightbox.css
with nav.css
, rewrites some links as necessary, renames Personographyinto
Contributors,rearranges appendix lists (historical persons and variant spellings), and sorts the personography alphabetically.
Note that there are other removals that happen through
add_special_styles_to_fo_master.xsl
.¶xhtml5_to_fo_styles_module.xsl
This
XSLT
module contains the styling and layout data for the XHTML5
to XSL:FO
transformation, which turns MoEML XHTML5
static site pages into PDFs. We will set up the pages initially so recto and verso
have slightly different margins, to allow for binding along the long edge. We may
decide to eliminate this distinction at some point. This module works with the special
one created for the particular files being transformed. It contains all the master
attribute sets needed, which have been mostly inspired from the various MoEML site
CSS
files. The attribute sets in this document do not include attributes or values that
do not agree with XSL:FO
or FOP
. The structure is straight-forward: the <xsl:stylesheet>
element contains all <xsl:attribute-set>
elements that must have a @name
attribute. These elements in turn contain <xsl:attribute>
elements, which also must have a @name
attribute and a value.Cite this page
MLA citation
MoEML’s PDF Developer Documentation.The Map of Early Modern London, Edition 7.0, edited by , U of Victoria, 05 May 2022, mapoflondon.uvic.ca/edition/7.0/pdfDev_about.htm. Draft.
Chicago citation
MoEML’s PDF Developer Documentation.The Map of Early Modern London, Edition 7.0. Ed. . Victoria: University of Victoria. Accessed May 05, 2022. mapoflondon.uvic.ca/edition/7.0/pdfDev_about.htm. Draft.
APA citation
The Map of Early Modern London (Edition 7.0). Victoria: University of Victoria. Retrieved from https://mapoflondon.uvic.ca/editions/7.0/pdfDev_about.htm. Draft.
2022. MoEML’s PDF Developer Documentation. In (Ed), RIS file (for RefMan, RefWorks, EndNote etc.)
Provider: University of Victoria Database: The Map of Early Modern London Content: text/plain; charset="utf-8" TY - ELEC A1 - El Hajj, Tracey ED - Jenstad, Janelle T1 - MoEML’s PDF Developer Documentation T2 - The Map of Early Modern London ET - 7.0 PY - 2022 DA - 2022/05/05 CY - Victoria PB - University of Victoria LA - English UR - https://mapoflondon.uvic.ca/edition/7.0/pdfDev_about.htm UR - https://mapoflondon.uvic.ca/edition/7.0/xml/standalone/pdfDev_about.xml TY - UNP ER -
TEI citation
<bibl type="mla"><author><name ref="#ELHA1"><surname>El Hajj</surname>, <forename>Tracey</forename></name></author>.
<title level="a">MoEML’s PDF Developer Documentation</title>. <title level="m">The
Map of Early Modern London</title>, Edition <edition>7.0</edition>, edited by <editor><name
ref="#JENS1"><forename>Janelle</forename> <surname>Jenstad</surname></name></editor>,
<publisher>U of Victoria</publisher>, <date when="2022-05-05">05 May 2022</date>,
<ref target="https://mapoflondon.uvic.ca/edition/7.0/pdfDev_about.htm">mapoflondon.uvic.ca/edition/7.0/pdfDev_about.htm</ref>.
Draft.</bibl>
Personography
-
Roles played in the project
-
Project Manager
Ryann McQuarrie-Salik is a member of the following organizations and/or groups:
Ryann McQuarrie-Salik is mentioned in the following documents:
-
-
Tracey El Hajj
TEH
Junior Programmer 2018-2020. Research Associate 2020-2021. Tracey received her PhD from the Department of English at the University of Victoria in the field of Science and Technology Studies. Her research focuses on the algorhythmics of networked communications. She was a 2019-20 President’s Fellow in Research-Enriched Teaching at UVic, where she taught an advanced course onArtificial Intelligence and Everyday Life.
Tracey was also a member of the Linked Early Modern Drama Online team, between 2019 and 2021. Between 2020 and 2021, she was a fellow in residence at the Praxis Studio for Comparative Media Studies, where she investigated the relationships between artificial intelligence, creativity, health, and justice. As of July 2021, Tracey has moved into the alt-ac world for a term position, while also teaching in the English Department at the University of Victoria.Roles played in the project
-
Author
-
CSS Editor
-
Editor
-
Geo-Coordinate Researcher
-
Junior Programmer
Contributions by this author
Tracey El Hajj is a member of the following organizations and/or groups:
Tracey El Hajj is mentioned in the following documents:
-
-
Joey Takeda
JT
Programmer, 2018-present. Junior Programmer, 2015-2017. Research Assistant, 2014-2017. Joey Takeda was a graduate student at the University of British Columbia in the Department of English (Science and Technology research stream). He completed his BA honours in English (with a minor in Women’s Studies) at the University of Victoria in 2016. His primary research interests included diasporic and indigenous Canadian and American literature, critical theory, cultural studies, and the digital humanities.Roles played in the project
-
Abstract Author
-
Author
-
CSS Editor
-
Compiler
-
Conceptor
-
Copy Editor
-
Editor
-
Encoder
-
Geo-Coordinate Researcher
-
Junior Programmer
-
Markup Editor
-
Post-Conversion Editor
-
Programmer
-
Proofreader
-
Researcher
-
Toponymist
-
Transcriber
-
Transcription Proofreader
Contributions by this author
Joey Takeda is a member of the following organizations and/or groups:
Joey Takeda is mentioned in the following documents:
Joey Takeda authored or edited the following items in MoEML’s bibliography:
-
Jenstad, Janelle and Joseph Takeda.
Making the RA Matter: Pedagogy, Interface, and Practices.
Making Things and Drawing Boundaries: Experiments in the Digital Humanities. Ed. Jentery Sayers. Minnesota: University of Minnesota Press, 2018. Print.
-
-
Janelle Jenstad
JJ
Janelle Jenstad is Associate Professor of English at the University of Victoria, Director of The Map of Early Modern London, and PI of Linked Early Modern Drama Online. She has taught at Queen’s University, the Summer Academy at the Stratford Festival, the University of Windsor, and the University of Victoria. With Jennifer Roberts-Smith and Mark Kaethler, she co-edited Shakespeare’s Language in Digital Media (Routledge). She has prepared a documentary edition of John Stow’s A Survey of London (1598 text) for MoEML and is currently editing The Merchant of Venice (with Stephen Wittek) and Heywood’s 2 If You Know Not Me You Know Nobody for DRE. Her articles have appeared in Digital Humanities Quarterly, Renaissance and Reformation,Journal of Medieval and Early Modern Studies, Early Modern Literary Studies, Elizabethan Theatre, Shakespeare Bulletin: A Journal of Performance Criticism, and The Silver Society Journal. Her book chapters have appeared (or will appear) in Institutional Culture in Early Modern Society (Brill, 2004), Shakespeare, Language and the Stage, The Fifth Wall: Approaches to Shakespeare from Criticism, Performance and Theatre Studies (Arden/Thomson Learning, 2005), Approaches to Teaching Othello (Modern Language Association, 2005), Performing Maternity in Early Modern England (Ashgate, 2007), New Directions in the Geohumanities: Art, Text, and History at the Edge of Place (Routledge, 2011), Early Modern Studies and the Digital Turn (Iter, 2016), Teaching Early Modern English Literature from the Archives (MLA, 2015), Placing Names: Enriching and Integrating Gazetteers (Indiana, 2016), Making Things and Drawing Boundaries (Minnesota, 2017), and Rethinking Shakespeare’s Source Study: Audiences, Authors, and Digital Technologies (Routledge, 2018).Roles played in the project
-
Abstract Author
-
Author
-
Author (Preface)
-
Author of Preface
-
Compiler
-
Conceptor
-
Copy Editor
-
Course Instructor
-
Course Supervisor
-
Data Manager
-
Editor
-
Encoder
-
Geo-Coordinate Researcher
-
Markup Editor
-
Peer Reviewer
-
Project Director
-
Proofreader
-
Researcher
-
Toponymist
-
Transcriber
-
Transcription Proofreader
-
Vetter
Contributions by this author
Janelle Jenstad is a member of the following organizations and/or groups:
Janelle Jenstad is mentioned in the following documents:
Janelle Jenstad authored or edited the following items in MoEML’s bibliography:
-
Jenstad, Janelle and Joseph Takeda.
Making the RA Matter: Pedagogy, Interface, and Practices.
Making Things and Drawing Boundaries: Experiments in the Digital Humanities. Ed. Jentery Sayers. Minnesota: University of Minnesota Press, 2018. Print. -
Jenstad, Janelle.
Building a Gazetteer for Early Modern London, 1550-1650.
Placing Names. Ed. Merrick Lex Berman, Ruth Mostern, and Humphrey Southall. Bloomington and Indianapolis: Indiana UP, 2016. 129-145. -
Jenstad, Janelle.
The Burse and the Merchant’s Purse: Coin, Credit, and the Nation in Heywood’s 2 If You Know Not Me You Know Nobody.
The Elizabethan Theatre XV. Ed. C.E. McGee and A.L. Magnusson. Toronto: P.D. Meany, 2002. 181–202. Print. -
Jenstad, Janelle.
Early Modern Literary Studies 8.2 (2002): 5.1–26..The City Cannot Hold You
: Social Conversion in the Goldsmith’s Shop. -
Jenstad, Janelle.
The Silver Society Journal 10 (1998): 40–43.The Gouldesmythes Storehowse
: Early Evidence for Specialisation. -
Jenstad, Janelle.
Lying-in Like a Countess: The Lisle Letters, the Cecil Family, and A Chaste Maid in Cheapside.
Journal of Medieval and Early Modern Studies 34 (2004): 373–403. doi:10.1215/10829636–34–2–373. -
Jenstad, Janelle.
Public Glory, Private Gilt: The Goldsmiths’ Company and the Spectacle of Punishment.
Institutional Culture in Early Modern Society. Ed. Anne Goldgar and Robert Frost. Leiden: Brill, 2004. 191–217. Print. -
Jenstad, Janelle.
Smock Secrets: Birth and Women’s Mysteries on the Early Modern Stage.
Performing Maternity in Early Modern England. Ed. Katherine Moncrief and Kathryn McPherson. Aldershot: Ashgate, 2007. 87–99. Print. -
Jenstad, Janelle.
Using Early Modern Maps in Literary Studies: Views and Caveats from London.
GeoHumanities: Art, History, Text at the Edge of Place. Ed. Michael Dear, James Ketchum, Sarah Luria, and Doug Richardson. London: Routledge, 2011. Print. -
Jenstad, Janelle.
Versioning John Stow’s A Survey of London, or, What’s New in 1618 and 1633?.
Janelle Jenstad Blog. https://janellejenstad.com/2013/03/20/versioning-john-stows-a-survey-of-london-or-whats-new-in-1618-and-1633/. -
Shakespeare, William. The Merchant of Venice. Ed. Janelle Jenstad. Internet Shakespeare Editions. U of Victoria. http://internetshakespeare.uvic.ca/Library/Texts/MV/.
-
Stow, John. A SVRVAY OF LONDON. Contayning the Originall, Antiquity, Increase, Moderne estate, and description of that Citie, written in the yeare 1598. by Iohn Stow Citizen of London. Also an Apologie (or defence) against the opinion of some men, concerning that Citie, the greatnesse thereof. With an Appendix, containing in Latine, Libellum de situ & nobilitate Londini: written by William Fitzstephen, in the raigne of Henry the second. Ed. Janelle Jenstad and the MoEML Team. MoEML. Transcribed.
-
-
Martin D. Holmes
MDH
Programmer at the University of Victoria Humanities Computing and Media Centre (HCMC). Martin ported the MOL project from its original PHP incarnation to a pure eXist database implementation in the fall of 2011. Since then, he has been lead programmer on the project and has also been responsible for maintaining the project schemas. He was a co-applicant on MoEML’s 2012 SSHRC Insight Grant.Roles played in the project
-
Abstract Author
-
Author
-
Conceptor
-
Editor
-
Encoder
-
Geo-Coordinate Researcher
-
Markup Editor
-
Post-Conversion Editor
-
Programmer
-
Proofreader
-
Researcher
Contributions by this author
Martin D. Holmes is a member of the following organizations and/or groups:
Martin D. Holmes is mentioned in the following documents:
-