A Challenge in Document Data Modeling

Anna Julia Cooper's Responses to the Survey of Negro College Graduates

Alice Rong and Elisa Beshero-Bondar
DIGIT program <https://digit-psb.github.io/DIGIT/>
Penn State Erie, The Behrend College


Link to these slides:

Tweets to @epyllia

Presentation for Keystone DH: 15 July 2021
Panel: Digital Pedagogy and Data Literacy (noon - 1:15pm)

How we began

  • background on AJC work at Penn State
  • classwork and student project work

 

3 minutes?

Anna Julia Cooper collection
created by Dr. Shirley Moody-Turner (Penn State University Park) and the Moorland-Springarn Research Center (Howard University):

State of the Digital Archive

  • Papers digitally imaged 
  • metadata curated
  • crowdsourced transcription

Summer 2020 conversation: EB-B and SM-T:

Q: May my students work on preparing digital editions in TEI from the image collection?

 

A:  Yes, and here's a little guidance on what you'll find in the collection!

With permission and guidance from SM-T, EB-B selected texts for students to work with from the Anna Julia Cooper collection

  • AJC's handwritten responses frequently exceed the formal boundaries of the printed survey form
    • Question 65 asks about her “racial philosophy” and provides four dotted lines for a response.
    • AJC’s response starts in the lines and continues on a back page of the survey.
    • Her response to this question is excerpted and published as an essay, without the context of the rest of the survey.
    • Crowd-sourced transcription shows unreconciled options, totally separates form questions from handwritten responses.
['1.'], ['Name'], ['Anna'], ['Julia'], ['Cooper'], ['2.'], ['Present'], ['address'], ['201'], ['T'], ['R.W.'], ['Washington'], ['D.C.'], ['3.'], ['(If'], ['married'], ['woman,'], ['give'], ['maiden'], ['name'], ['on'], ['this'], ['line)'], ['Anna'], ['Julia'], ['Haywood'], ['4.'], ['Length'], ['of'], ['residence'], ['in'], ['this'], ['city'], ['45'], ['Yrs.'], ['State'], ['of'], ['longest'], ['residence'], ['5.'], ['Age'], ['72'], ['Sex'], ['F'], ['Date'], ['of'], ['Birth'], ['Aug'], ['10,'], ['1860'], ['Place'], ['of'], ['birth'], ['Raleigh,'], ['N.C.'], ['6.'], ['Marital'], ['status:'], ['Single'], ['Widowed'], ['Married'], ['-'], ['Date'], ['of'], ['Marriage'], ['June'], ['21,'], ['1877'], ['Age'], ['at'], ['marriage'], ['17'], ['Divorced'], ['Date'], ['Separated'], ['Date'], ['Widowed'], ['Date'], ['Sept.'], ['27'], ['1879'], ['Deserted'], ['Date'], ['Remarried'], ['Date'], ['7.'], ['Children'], ['living:'], ['None'], ['Children'], ['dead:'], ['None'], ['8.'], ['Present'], ['occupation:'], ['Teacher'], ['and'], ['President'], ['Frelinghuysen'], ['University'], ['9.'], ['Present'], ['annual'], ['salary'], ['$'], ['50.00'], ['or'], ['yearly'], ['net'], ['income,'], ['deducting'], ['expenses'], ['of'], ['earning'], ['except'], ['income'], ['tax.....or'], ['kindly'], ['check'], ['the'], ['class'], ['within'], ['which'], ['your'], ['net'], ['income'], ['falls:'], ['Under'], ['$'], ['500'], ['$'], ['500-'], ['$'], ['999'], ['$'], ['1000-1499'], ['X'], ['$'], ['1500-1999'], ['$'], ['2000-2499'], ['$'], ['2500-'], ['$'], ['2999'], ['$'], ['3000-'], ['$'], ['3499'], ['$'], ['3500-'], ['$'], ['3999'], ['$'], ['4000-'], ['$'], ['4499'], ['$'], ['4500-'], ['$'], ['4999'], ['$'], ['5000-'], ['$'], ['5999'], ['$'], ['6000-'], ['$'], ['6999'], ['$'], ['7000-'], ['$'], ['7999'], ['$'], ['8000-'], ['$'], ['8999'], ['$'], ['9000-'], ['$'], ['9999'], ['$'], ['10,000'], ['and'], ['over'], ['10.'], ['Of'], ['what'], ['college'], ['or'], ['professional'], ['school'], ['are'], ['you'], ['a'], ['graduate?'], ['Oberlin'], ['College'], ['Date'], ['of'], ['graduation'], ['BA,'], ['1884,'], ['MA'], ['1887'], ['11.'], ['Occupations'], ['since'], ['graduation'], ['From'], ['To'], ['Yearly'], ['Salary'], ['1.'], ['Professor'], ['Modern'], ['Lang.'], ['and'], ['Lit.'], ['Wilberforce'], ['U.'], ['Sept.'], ['1884'], ['June'], ['1885'], ['1000'], ['2.'], ['Instructor'], ['in'], ['Math'], ['Latin'], ['and'], ['Greek,'], ['St.'], ['Aug.'], ['Normal'], ['Sc.'], ['Sept.'], ['1885'], ['June'], ['1887'], ['Less'], ['than'], ['1000'], ['forget'], ['exactly'], ['3.'], ['Teacher'], ['Washington'], ['High'], ['School'], ['Sept.'], ['1887'], ['from'], ['750'], ['up'], ['4.'], ['Principal'], ['M.'], ['St.'], ['High'], ['School'], ['Dec'], ['1901'], ['Sept'], ['1906'], ['5.'], ['Professor'], ['Foreign'], ['Languages'], ['Lincoln'], ['Inst.'], ['MO'], ['1906'], ['1910'], ['1100'], ['6.'], ['Teacher'], ['of'], ['Latin'], ['Washington'], ['High'], ['School'], ['1910'], ['1930'], ['1800'], ['7.'], ['Retired'], ['from'], ['Public'], ['Schools'], ['June'], ['1930'], ['Pension'], ['1434'], ['8.'], ['President'], ['Frelinghuysen'], ['University'], ['June'], ['1930'], ['50.']]"	1.0	1.0	"Form A. 3533 Date Negro College Graduates Individual Occupational History I. Social Information 1. Name Anna Julia Cooper 2. Present address 201 T R.W. Washington D.C. 3. (If married woman, give maiden name on this line) Anna Julia Haywood 4. Length of residence in this city 45 Yrs. State of longest residence 5. Age 72 Sex F Date of Birth Aug 10, 1860 Place of birth Raleigh, N.C. 6. Marital status: Single Widowed Married - Date of Marriage June 21, 1877 Age at marriage 17 Divorced Date Separated Date Widowed Date Sept. 27 1879 Deserted Date Remarried Date 7. Children living: None Children dead: None 8. Present occupation: Teacher and President Frelinghuysen University 9. Present annual salary $ 50.00 or yearly net income, deducting expenses of earning except income tax.....or kindly check the class within which your net income falls: Under $ 500 $ 500- $ 999 $ 1000-1499 X $ 1500-1999 $ 2000-2499 $ 2500- $ 2999 $ 3000- $ 3499 $ 3500- $ 3999 $ 4000- $ 4499 $ 4500- $ 4999 $ 5000- $ 5999 $ 6000- $ 6999 $ 7000- $ 7999 $ 8000- $ 8999 $ 9000- $ 9999 $ 10,000 and over 10. Of what college or professional school are you a graduate? Oberlin College Date of graduation BA, 1884, MA 1887 11. Occupations since graduation From To Yearly Salary 1. Professor Modern Lang. and Lit. Wilberforce U. Sept. 1884 June 1885 1000 2. Instructor in Math Latin and Greek, St. Aug. Normal Sc. Sept. 1885 June 1887 Less than 1000 forget exactly 3. Teacher Washington High School Sept. 1887 from 750 up 4. Principal M. St. High School Dec 1901 Sept 1906 5. Professor Foreign Languages Lincoln Inst. MO 1906 1910 1100 6. Teacher of Latin Washington High School 1910 1930 1800 7. Retired from Public Schools June 1930 Pension 1434 8. President Frelinghuysen University June 1930 50."	[False]	[1973913.0]

TEI Document Data Modeling Challenge

Begin with Research questions: 

  • How can text encoding model the interaction between the survey prompts and AJC's handwritten responses?
     
  • How much does AJC exceed the formal boundaries allotted for her responses?
     
  • What historical data about people, organizations, events is recorded in this document? 

TEI assignment series

  • First, throw students into ”deep end of the pool”
  • Study the document, think about its structure
  • Research the TEI Guidelines: Which elements are most useful?
  • Try blocking up a portion of the survey in TEI (TEI-All, oXygen)
    • Class of 25 students submits variety of code responses
    • Some baffled, most attempting something
    • Multiple students find their way to parts of the TEI Header and coding metadata about handDesc and typeDesc
    • Alice Rong's response makes lots of progress on coding the survey questions with their handwritten responses
  • EB-B combines student input, creates a project ODD schema to customize the TEI
  • Students code parts of the survey as class exercise

 

 

AJC Survey as Semester Project Option

  • Semester project: short document data modeling project
  • AJC survey = one of six options for the semester project
     
  • Challenge to students:
             
                 Transcribe, Encode, Curate, Process, Re-mediate
     
    • ​Curate the documents in TEI or your own XML on GitHub
      • Document data modeling: structure significant data using markup
        • with schema rules you define, or
        • with a TEI ODD customization building on EB-B's start (AJC survey)
    • Transform XML with XSLT into HTML (on GitHub Pages websites)
      • share a reading view on a project website
      • explore research questions with the data you marked
      • highlight project data and metadata

Document data modeling

  

How the TEI was not as helpful as we'd like

(no examples for survey forms in handwritten sources)

 

Alice's solution! Figuring out a way...

 

 

 

TEI Encoding Decisions

  • Main sections of the survey categorized with the <div1> element.
     
  • Survey questions and respective responses categorized with the <div2> and <ab> elements.
     
  • AJC's responses categorized with the <add> element.
     
  • AJC's deletions marked with the <del> element
    • AJC occasionally would cross-out, strike-through survey text.
       
  • People, places, and organizations marked with <persName>, <placeName>, and <orgName> respectively.

Notice:

  • AJC crosses out "Wife or" and capitalizes "Husband"
  • AJC doesn't follow instructions to circle the highest grade completed.

Survey Questions 13 and 14:
AJC's edits to the survey

TEI Encoding of Questions 13 and 14: hierarchy of nested elements

<div1 type="section" n="I">
  ...
  <div2 type="question" n="13">
      <ab> 13. Do you own your home? <add hand="#AJC">Yes</add> Value of home <add
           hand="#AJC">18000</add> Other property owned <add hand="#AJC">Cottage in
           <placeName>Raleigh N.C.</placeName> 2 lots in 
           <placeName>upper mallboro Md.</placeName></add> Value 
           <add hand="#AJC">Uncertain, two or three thousand perhaps.</add>
      </ab>
  </div2>
  <div2 type="question" n="14">
      <ab> 14. <del hand="#AJC" rend="strikethrough">Wife or</del>
           <del hand="#AJC" rend="overwrite">h</del>Husband: Birthplace 
           <add hand="#AJC"><placeName>Nassau British W.I.</placeName></add> 
           Present occupation <add hand="#AJC">deceased</add>
           Education: (Draw circle around last grade completed) 
           <add hand="#AJC">Educated for
           Priest in the <orgName>Episcopal Church</orgName>.</add>
           <lb/>Grammar school---1-2-3-4-5-6-7-8; High school---1-2-3-4;
           College---1-2-3-4-5-6-7-8 
           <lb rend="1-L"/>Of what college or professional school a
           graduate <add hand="#AJC"><orgName>St. Augustine's Divinity 
           School</orgName></add> Degree <add hand="#AJC" rend="2-L">Ordained Deacon 
           &amp; passed examinations for the priesthood under 
           <persName>Bishop Lyman Bp</persName> of <placeName>N.C.</placeName></add>
       </ab>
  </div2>
  ...
</div1>

Tables, Marks, Deletions, Gaps, and Overflow

  • TEI <table> element for tables in the survey
     
  • Various handwritten marks (e.g. checkmarks, underlines, arrows, etc.) are categorized with the <metamark> element
     
  • <gap> used for unreadable portions, including where photo cuts off at page edges.
     
  • <unclear> used for best effort to decipher difficult handwriting.
     
  • Overflow and continuation of answers in later pages: (difficult decisions!)
    • Organization by question rather than by page layout: Overflow answers on other pages are coded within the <div2> of a survey question. (late-breaking decision)
    • <note> element to explain location of the overflow in the source.
    • @rend attribute to count lines provided by survey, and
      <lb/> element to indicate AJC’s line-beginnings. (inconsistent code!)

Questions 36-38: overflow
and hole in the page (on left)

bottom left: overflow from question 22 on previous page!

TEI Encoding of Questions 36, 37, and 38: overflow, unclear, gap

<div2 type="question" n="36">
    <ab rend="1-L"> 36. How well did you do in college? <add hand="#AJC">Hardly a fair
        question for personal answer. I did my best &amp; <metamark
        rend="short-connecting-line"/><lb/><note resp="#ebb">Here AJC’s text flows
        upside-down along the top of the form</note> 4 Professors including
        <persName>Prest. Fairchild</persName> gave me letters rating me first in the
        class.</add>
    </ab>
</div2>
<div2 type="question" n="37">
    <ab rend="1-L"> 37. To what extent were you influenced by religious training,
        personalities or the religious atmosphere of your school? <add hand="#AJC">
        <lb/>I entered <orgName>Oberlin</orgName> a bigoted "Churchman". I left 
        not the slightest attempt at <unclear><supplied>proselyting</supplied>
        </unclear>. &amp; yet<gap reason="image cut off on right margin"/>
        <lb/>altho I continued to attend the little Episcopal Church religiously the
        breadth &amp; real catholicity of the 
        <lb/><orgName>Oberlin</orgName> spirit the friendly contacts
        &amp; wider study had the inevitable
        result which I consider humanizing of one's
        <lb/><gap reason="image cut off on left margin"/><supplied>"ch</supplied>
        <unclear><supplied>urchianity</supplied></unclear>." </add>
    </ab>
</div2>
<div2 type="question" n="38">
    <ab rend="3-L"> 38. What is your attitude toward educational methods of instruction
        in college? (Mention the strongest and weakest features? <add hand="#AJC">
        <lb/> Too broad to be answered in 2 lines. If the post was machine method of
        "tests &amp; measurements" to <lb/>Sting out the unfit prevails we never can
        tell what is to be done for the untalented plodder who <lb/>continues to want
        more. You may have your Loebs &amp; Leopolds &amp; reject Lindbergs. </add>
    </ab>
</div2>

XSLT and CSS decisions for HTML blocking and styling to display the writing events

Overflow from one page to another: Question 22

TEI Encoding of Question 22:
<supplied> and <note>

<div2 type="question" n="22">
  <ab rend="3-L"> 22. As you think of it now, do you regard your preparatory training,
    before college, as adequate or defective? i.e., What deficiencies or omissions in
    that period do you feel would be of value to you? Please comment briefly <add
    hand="#AJC"><lb/>Under <persName>Dr. J. <surname>Brinton
    Smith</surname></persName>, founder, I was made pupil teacher at the age of
    8, first for board &amp; tuition<gap reason="image cut off on right margin"/>
    <lb/>Teaching &amp; studying, married &amp; widowed in this <q>world</q> of a
    church school I think the preparation for c<supplied><note>words continue onto the 
    next page of the survey</note>ollege</supplied> <lb/>may pass as <q>good</q> for 
    the time in that I was admitted on examination with some praise to the
    Sophomore c<supplied><note>words continue onto the next page of the survey</note>lass 
    of Oberlin</supplied> <lb/>Entrance exams, in the Anabasis, the Iliad <abbr>Caes</abbr>
    <abbr>Cic</abbr><!--ebb: I think these are abbreviations for Caesar and Cicero, which 
    used to be taught a lot in a classics (ancient Greek/Roman literature) curriculum in 
    the late 19th-century.-->, Plane &amp; Solid Geometry <supplied><note>words continue 
    onto the next page of the survey</note> Passed.</supplied>
    <lb/>Conditioned in Trig. Mechanics, Physics, Hist. of Civilization <metamark
    rend="short-connecting-line"/><add place="below">&amp; Science of
    Government</add>, the Odyssey made up
    <unclear><supplied>in</supplied></unclear> one yea<supplied
    reason="image cut off on right margin">r <note>words continue onto the next page of 
    the survey</note> <unclear>to entrance conditions in</unclear>.</supplied></add>
  </ab>
</div2>

AJC adds a row to a table in the survey

Code for Question 23 (scroll down for AJC's added row)

<div2 type="question" n="23">
  <ab> 23. College and Professional Training:</ab>
  <table rend="boxed" rows="6" cols="3">
    <row role="label">
      <cell><hi rend="italic">Institution</hi></cell>
      <cell><hi rend="italic">Period (give dates)</hi></cell>
      <cell><hi rend="italic">Diploma or degree</hi></cell>
    </row>
    <row n="1">
      <cell>1 <add hand="#AJC">
        <orgName>St. Aug. Normal &amp; Collegiate</orgName></add></cell>
      <cell><add hand="#AJC">from early youth to 1881</add></cell>
      <cell><add hand="#AJC">None</add></cell>
    </row>
    <row n="2">
      <cell>2 <add hand="#AJC">
        <orgName>Oberlin</orgName></add></cell>
      <cell><add hand="#AJC">Sept. '81 -- June '84</add></cell>
      <cell><add hand="#AJC">A.B.</add></cell>
    </row>
    <row n="3">
      <cell>3 <add hand="#AJC">
        <orgName>Oberlin</orgName> on 3 yrs. College Teaching</add></cell>
      <cell><add hand="#AJC">'84 --- '87</add></cell>
      <cell><add hand="#AJC">M.A</add></cell>
    </row>
    <row n="4">
      <cell>4 <add hand="#AJC"><orgName>Columbia</orgName> on 4 yrs graduate courses
            in S.S.</add></cell>
      <cell><add hand="#AJC">1914, 15, 16, 17</add></cell>
      <cell><add hand="#AJC" rend="2-L">Guilde Internationale Paris
            S.S</add></cell>
    </row>
    <row rend="none">
      <!-- added by AJC, not originally part of surey -->
      <cell><add hand="#AJC">5 <orgName>Universite de Paris</orgName>, La
            Sorbonne</add></cell>
      <cell><add hand="#AJC">1924 - '25. Residence &amp; thesis</add></cell>
      <cell><add hand="#AJC"><metamark rend="verticalLine"/> PHD.</add></cell>
    </row>
  </table>
</div2>

HTML / CSS view of AJC’s added table row

Transformation: making a digital edition

  • historical data (named entities)
  • navigating the survey
  • NOT trying to make it like the original: Styling decisions 
    • making metadata pop out
    • making it navigable

      5 mins?

XSLT to tabulate historical data, navigate the edition

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    xpath-default-namespace="http://www.tei-c.org/ns/1.0"
    xmlns="http://www.w3.org/1999/xhtml"
    version="3.0">
    
    <xsl:output method="xhtml" encoding="utf-8" doctype-system="about:legacy-compat"
        omit-xml-declaration="yes"/>
    
    <xsl:template match="/">
        <html>
            <head>
                <title>Anna Julia Cooper Survey Answers</title>
                <link rel="stylesheet" type="text/css" href="webstyle.css"/>
            </head>
            <body>
                <div id="middle"> 
                    <div id="banner">
                        <h1>Anna Julia Cooper</h1>
                        <h2>Responses to the Survey of Negro College Graduates</h2>
                    </div>
                    <hr/>
                    <div id="menu">
                        <a href="index.html">Main</a> <a href="aboutSection.html">About</a>
                        <a href="AJC-output.html">Edition</a><a href="document.html">Original Document</a> <a href="originalCode.html">Source Code</a>
                        <a href="projectInfo.html">Project Information</a>
                    </div>
                    <hr/>
                    
                    <div id="content">
                        <br/>
                        <h1><xsl:apply-templates select="descendant::title[@type='main']"/></h1>
                        <h1><i><xsl:apply-templates select="descendant::title[@type='sub']"/></i></h1><!-- table for orgNames, persNames, and placeNames -->           
                        <section id="table">
                            <br/>
                            <h3>Information about People, Places, and Organizations Mentioned in Survey</h3>
                            <table>
                                <tr>
                                    <th>Question number</th>
                                    <th>People</th>
                                    <th>Organizations</th>
                                    <th>Places</th>
                                </tr>
                                <xsl:apply-templates select="descendant::div2[descendant::persName or descendant::orgName or descendant::placeName]" mode="table"/>
                            </table>
                        </section>
                        <xsl:apply-templates select="descendant::div1"/>
                        
                    </div>   
                    <div id="footer">
                        <p xmlns:dct="http://purl.org/dc/terms/" xmlns:cc="http://creativecommons.org/ns#" class="license-text">This work   is licensed under <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0">CC BY-NC-SA 4.0<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" /><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" /><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1" /><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1" /></a> | GitHub code view: <a href="https://github.com/AliceR98/DIGIT-110-AJC-Survey">https://github.com/AliceR98/DIGIT-110-AJC-Survey</a></p>
                    </div>
                </div>
            </body>
        </html>
    </xsl:template>
    
    
    
    <xsl:template match="div1">
        <section id="S{count(preceding-sibling::div1) + 1}">
            <h3><xsl:apply-templates select="descendant::head[1]"/></h3>
            <xsl:apply-templates select="descendant::div2"/>
        </section>
    </xsl:template>
    
    <xsl:template match="div2" mode="table">
        <tr>
            <td>
                <a href="#Q{@n}"><xsl:value-of select="@n"/></a>      
            </td>
            <td>
                <xsl:value-of select="descendant::ab/add/persName | descendant::table/row/cell/add/persName => sort()" separator=", "/>
            </td>
            <td>
                <xsl:value-of select="descendant::ab/add/orgName | descendant::table/row/cell/add/orgName => sort()" separator=", "/>
            </td>
            <td>
                <xsl:value-of select="descendant::ab/add/placeName | descendant::table/row/cell/add/placeName => sort()" separator=", "/>
            </td>
        </tr>
    </xsl:template>
    
    <xsl:template match="div2">
        <div id="Q{count(preceding::div2) + 1}">
            <xsl:choose>
                <xsl:when test="ab">
                    <xsl:apply-templates/>   
                </xsl:when>
                <xsl:when test="table">
                    <xsl:apply-templates select="table"/>
                </xsl:when>
                <xsl:when test="list">
                    <div class="list"><xsl:apply-templates select="list"/></div>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates/>
                </xsl:otherwise>
            </xsl:choose> 
            <p class="top"><a href="#table">Back to table &#8593;</a></p>
        </div>     
        <br/>
    </xsl:template>
    
    <xsl:template match="div3">
        <xsl:choose>
            <xsl:when test="ab">
                <xsl:apply-templates/>   
            </xsl:when>
            <xsl:when test="table">
                <xsl:apply-templates select="table"/>
            </xsl:when>
            <xsl:when test="list">
                <div class="list"><xsl:apply-templates select="list"/></div>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose> 
    </xsl:template>

    <xsl:template match="table">
        <table>
            <tr>
                <xsl:for-each select="row[@role='label']/cell">
                    <th><xsl:apply-templates/></th>
                </xsl:for-each>
            </tr>
            <xsl:for-each select="row[@n]">
                <tr>
                    <xsl:for-each select="cell">
                        <td><xsl:apply-templates/></td>
                    </xsl:for-each>
                </tr>     
            </xsl:for-each>
            <xsl:if test="row[@rend='none']">
                <tr class="ajcAdd">
                    <xsl:for-each select="row[@rend='none']/cell">
                        <td class="ajcAdd"><xsl:apply-templates/></td>
                    </xsl:for-each>
                </tr>     
            </xsl:if>
        </table>
    </xsl:template>
    
    <xsl:template match="list">
        <xsl:if test="descendant::head">
            <p><xsl:apply-templates select="descendant::head"/></p>
        </xsl:if>
        
        <ol type="a">
            <xsl:for-each select="item">    
                <li><xsl:apply-templates/></li>
            </xsl:for-each>
        </ol>
    </xsl:template>
    
    <xsl:template match="add[@hand]">
        <ins class="hand"><xsl:apply-templates/></ins>
    </xsl:template>
    
    <xsl:template match="metamark">
        <xsl:choose>
            <xsl:when test="@rend='checkmark'">
                <span class="meta">&#10003; </span>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    
    <xsl:template match="note">
        <span class="note"><xsl:apply-templates/></span>
    </xsl:template>
    
    <xsl:template match="supplied[not(parent::unclear)]">
        <span class="supplied">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="space">
        <span class="blank">&#160; </span>
    </xsl:template>
    
    <xsl:template match="del">
        <del><xsl:apply-templates/></del>  
    </xsl:template>
    
    <xsl:template match="unclear">
        <span class="unclear"><xsl:apply-templates/></span>
    </xsl:template>
    
    <xsl:template match="gap">
        <span class="gap">
            <xsl:value-of select="@reason"/>
        </span>
    </xsl:template>
    
    <xsl:template match="persName">
        <span class="persName">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="placeName">
        <span class="placeName">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="orgName">
        <span class="orgName">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="q">
        “<xsl:apply-templates/>”
    </xsl:template>
    
    <xsl:template match="hi">
        <xsl:choose>
            <xsl:when test="@rend='italic'">
                <i><xsl:apply-templates/></i>
            </xsl:when>
            <xsl:when test="@rend='underline'">
                <u><xsl:apply-templates/></u>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

CSS for representing a readable edition

body {
background-color: #d6ebff;
font-family: "Trebuchet MS", Helvetica, sans-serif;
}

h1, h2, h3{
    font-family: Georgia, serif;
}

ol {
list-style-type: none;
display: inline-block;
    
}

h1 {
    line-height: 80%;
}

#S1, #S2, #S3 {
    line-height: 200%;
    font-family: Georgia, serif;
}

ins {
    font-family: "Trebuchet MS", Helvetica, sans-serif;
    padding: 5px;
    border: 1.5px dashed;
    text-decoration: none;
}

#table table, #table th, #table td{
border: 1px solid #000066;    
padding: 5px;
vertical-align:top;
}

table, th, td{
border: 1.75px;
border-collapse: collapse;   
padding: 10px;
vertical-align:top;
}

table, th, td {
    border-style: solid;
}

td.ajcAdd {
    border-style: dashed;
    background-color: #d6d6d6;
}

.unclear {
    background: #ffc7c7;
}

.gap, .note {
    background-color: #d6d6d6;
    color: #c00;
    padding: 2px 5px 2px 5px;
    font-style: italic;
    font-weight: bold;
    font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
}

.supplied {
    background-color: #fdf8a1;
}

.top {
    font-size: 70%;
    line-height: 70%;
    text-align: right;
}

.stdimg {
    display: block;
    width: 40%;
    margin: auto;
}

.AJC {
    display: block;
    width: 20%;
    margin: auto;
}

.center {
    display: block;
    width: 30%;
    margin: auto;
}


#banner {
    text-align: center;
    padding: 10px 0 0 0;
}

#banner h1 {
    font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
    font-size: 3em;
    line-height: 0px;
}

#banner h2 {
    font-size: 1em;
    font-style: italic; 
}

#banner h1, #banner h2{
    color: indigo;
}

#menu {
padding: 0 0 0 5px;
height: 30px;
margin: 0px auto;
background: #27006b; 
}

#menu a {
vertical-align: baseline;
display: block;
float: left;
padding: 5px 10px 7px 10px;
text-decoration: none;
font-family: Georgia, serif;
text-align: center;
color: #ffffff;}

#menu a:hover{
    background: white;
    color: black;
    opacity: .8;
}

#middle{
    width: 1225px;
    margin: 0px auto;
    padding: 0 0 0 0px;
    background:#ffffff;
}

#content{
    width: 1100px;
    margin: 15px auto;
    
}

#footer {
height: 50px;
margin: 0px auto;
background: #27006b;
color: white;
}

#footer p{
    margin: 0px;
    padding: 10px 10px 10px 10px;
}
#footer a{
    color: #d6ebff;
}

Note handling of overflow from Questions 46 and 65

Who was AJC? What's memorable about her from prepping this digital edition? 

Conclusions: What we learned about Anna Julia Cooper
 

  • Feisty, snarky, strong-willed
  • Immense passion for education

What we learned...

  • Black archival resources on the web:
    • Cursive handwriting: how long will students be able to write/read it?
    • making resources like AJC's writings easy to search, navigate, and read.
       
  • web work, historical research, and DH
    • TEI needs models for handwritten surveys!
       
  • How the project could continue: