Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
69 lines (63 sloc) 7.28 KB
start=root
root=element root{\div+}
\div=element div{type, (subtitle| head| pb| p| articleBody)*, (pb| p| \div)*} #div always has to have attribute type
type=attribute type{"preface"| "chapter"| "articleReference"| "newspaperArticle"| "city"| "state"| "country"| "wage"| "cost"| "profit"| "price"| "general"| "streetName"| "address"}
subtitle=element subtitle{text}
head=element head{(title, mixed{p})| (newspaperTitle, seriesTitle, headLine+)} #head must always first contain a title or must follow the secoond string
title=element title{text}
articleBody=element articleBody{mixed{(dialogue| headLine| placeName| workingConditions| livingConditions| ref| statistic| industry| pb| desc| occupation| num| person| date| quote| location| table| version| company| persName| orgName| factoryItem| femVoice| mascVoice| nellVoice| unclear| nationality )*}}
dialogue=element dialogue{mixed{(mascVoice| nellVoice| femVoice| unclear| num| placeName|factoryItem|nationality|desc|workingConditions|persName)*}}
unclear=element unclear{empty}
newspaperTitle=element newspaperTitle{mixed{date, num}}
seriesTitle=element seriesTitle{text}
headLine=element headLine{mixed{(ref| num| desc| workingConditions| date| factoryItem| placeName| company| location| persName| nationality)*}}
pb=element pb{n, empty} #pb is a self-closing tag
n=attribute n{text| xsd:int} #n should be followed by either roman numeral (therefore text) or a number but not both
p=element p{mixed{(placeName| workingConditions| livingConditions| ref| statistic| industry| pb| desc| occupation| num| person| date| quote| location| table| version| company| persName| orgName| factoryItem| femVoice| mascVoice| nellVoice| nationality)*}} # p can contain any of these elements
placeName=element placeName{mixed{type}} #placeName can be followed by either the attribute type and/or text
workingConditions=element workingConditions{category, mixed{(num| placeName| date| factoryItem| persName| person| company| location| nellVoice| femVoice| mascVoice| desc| pb| nationality| version)*}} #workingConditions must first be defined by one of the category attributes and then can contain text and/or num
livingConditions=element livingConditions{category, mixed{(num| desc| company| femVoice| persName| version)*}} #livingConditions must first be defined by one of the category attributes and then can contain text
category=attribute category{"camaraderie"| "positive"| "negative"| "comparison"| "wageDesc"| "workDesc"| "descriptionNeutral"}
ref=element ref{to, (date| ref| placeName| italics| text)*} #ref must first be defined by one of the to attributes and then can contain text
to=attribute to{"newspaperSeries"| "nellNelson"| "theTimes"}
statistic=element statistic{info, mixed{date?|placeName?}} #statistic must first be defined by an info attribute and then can contain text
info=attribute info{"vague"| "specific"}
industry=element industry{text}
desc=element desc{of, mixed{(unclear| nationality| location| num| ref| date| persName| workingConditions| factoryItem| person| nellVoice| femVoice)*}} #desc must first be defined by an "of" attribute and then can contain text
nationality=element nationality{nation, text}
nation=attribute nation{"America"| "Spain"| "Africa"| "Sweden"| "China"| "Germany"| "Hungary"| "Ireland"| "undefined"}
of=attribute of{"womensLabor"| "workingClass"| "middleClass"| "upperClass"}
occupation=element occupation{text}
num=element num{type, amount, text} #num must be defined by both the type attribute and the amount attribute before it can contain text
amount=attribute amount{xsd:decimal} #amount must be followed by numbers with decimal points
person=element person{mixed{(who| gender| workingConditions| unclear| num| pb| nationality)*}} #person should be defined by who and/or gender before can contain text
who=attribute who{"forePerson"| "workingGirl"| "employer"| "employee"| "boy"}
gender=attribute gender{"male"|"female"}
date=element date{(when| year| month| day), text} #date must be defined by one of the attributes before text
when=attribute when{xsd:date} #when should be a completly defined date in the following formate year-month-day
year=attribute year{xsd:gYear} #year should be a four digit representation of a year
month=attribute month{xsd:gMonth} #month should be a two digit representation of the month
day=attribute day{xsd:gDay} #day should be a two digit representation of the day
quote=element quote{speaker, mixed{(workingConditions| desc| italics| num| femVoice)*}} #if something is tagged with quote it is specific or attributed to a speaker that only speaks once and should have a speaker attribute associated before text
italics=element italics{text}
speaker=attribute speaker{"Tennyson"| "factoryInspector"| "laborCommissioner"| "workGirl"}
location=element location{type, mixed{placeName?}} #location should be followed by the type attribute but can then contain text and/or placeName ...placeName may also not be present
table=element table{tableTitle, mixed{(number| question| response| refPoint)*}} #tables must first be titled and then any of the other elements or text can follow
tableTitle=element tableTitle{text}
number=element number{xsd:int}
question=element question{mixed{refPoint?}}
response=element response{choice, (refPoint?| xsd:int| text| empty)} #response must first be defined by the choice attribute and then a number can follow if the response has the optional attribute it can be empty
choice=attribute choice{"Yes"| "No"| "Blank"| "Optional"| "Sit"| "Stand"}
refPoint=element refPoint{mixed{letter}} #refPoint needs a letter attribute
letter=attribute letter{"a"| "b"| "c"| "d"| "e"| "f"| "g"| "h"}
version=element version{change, mixed{(location*| company*| factoryItem*| ref*| person*| nellVoice*| workingConditions*| num*| desc*| empty)}} #version must first be defined by the change attribute and then can be followed by text
change=attribute change{"addition"| "deletion"| "variance"| "exaggeration"}
company=element company{name, mixed{persName*| placeName*| location*}} #company must first be defined by the name attribute and the then text can follow
name=attribute name{"unidentified"| "identified"}
persName=element persName{text}
orgName=element orgName{text}
factoryItem=element factoryItem{text}
femVoice=element femVoice{mixed{(connotation| who)*, (nationality| mascVoice| ref| unclear| date| person| num| factoryItem| occupation| workingConditions| livingConditions| desc| persName| company| industry| placeName| location| pb| version)*}} #the voice elements do not need to have a connotation or a who attribute specified but if there must come before anything else
mascVoice=element mascVoice{mixed{(connotation| who)*, (nationality| ref| unclear| date| person| num| factoryItem| occupation| workingConditions| livingConditions| desc| persName| company| industry| placeName| location| pb| version)*}}
nellVoice=element nellVoice{mixed{connotation*, (nationality| ref| unclear| date| person| num| factoryItem| occupation| workingConditions| livingConditions| desc| persName| company| industry| placeName| location| pb| version)*}}
connotation=attribute connotation {"sarcasmWit"| "pity"| "positive"| "negative"| "woe"| "descriptionNeutral"| "intimidated"| "angry"| "sexual"| "offended"| "prayer"} #is there a better word you can think of instead of sexual ... i want it to convey the way some of the male counterparts in Nell's articles speak with sexual inuendo to her or other females