diff -r e415b3d474a1 -r 6c30a3543cd8 RelaxNG/publidoc.rnc --- a/RelaxNG/publidoc.rnc sam. déc. 01 08:49:14 2018 +0100 +++ b/RelaxNG/publidoc.rnc dim. janv. 20 16:50:11 2019 +0100 @@ -1,22 +1,21 @@ - start = publidoc publidoc = element publidoc { - publidoc.attributes, - publidoc.content -} + publidoc.attributes, + publidoc.content + } publidoc.attributes = - version.attribute + version.attribute version.attribute = attribute version { "1.0" } publidoc.content = - document - | top.topic - | glossary + document + | glossary + | topic # ============================================================================= -# HEAD LEVEL +# HEAD # ============================================================================= # ~~~~~~~~~~~~~~~~~~~~~~~ title, shorttitle, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -30,20 +29,21 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~ identifier -identifier = element identifier { - (attribute type { "ean" }, for.attribute?, xsd:token {pattern = "\d{13}"}) - | (attribute type { "uri" }, for.attribute?, xsd:anyURI) -} +identifier = + element identifier { + (attribute type { "ean" }, for.attribute?, xsd:token {pattern = "\d{13}"}) | + (attribute type { "uri" }, for.attribute?, xsd:anyURI) + } # ~~~~~~ identifier.ean -identifier.ean = element identifier { - attribute type { "ean" }, for.attribute?, xsd:token {pattern = "\d{13}"} -} +identifier.ean = + element identifier { + attribute type { "ean" }, for.attribute?, xsd:token {pattern = "\d{13}"} + } # ~~~~~~ identifier.uri -identifier.uri = element identifier { - attribute type { "uri" }, for.attribute?, xsd:anyURI -} +identifier.uri = + element identifier { attribute type { "uri" }, for.attribute?, xsd:anyURI } # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -63,17 +63,17 @@ contributors = element contributors { contributors.content } contributors.content = - contributor+ + contributor+ # ~~~~~~ contributor contributor = element contributor { contributor.content } contributor.content = - identifier.uri?, - ((firstname?, lastname) | label), - address?, - link?, - role+ + identifier.uri?, + ((firstname?, lastname) | label), + address?, + link?, + role+ # ~~~~~~ firstname, secondname, lastname, label firstname = element firstname { firstname.content } @@ -92,8 +92,8 @@ # ~~~~~~ role role = element role { role.content } -role.content = "author" | "illustrator" | "publisher" | "packager" - | "translator" +role.content = + "author" | "illustrator" | "publisher" | "packager" | "translator" # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -103,16 +103,17 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -source = element source { - ( (attribute type { "book" }, bibliography.entry.content) - | (attribute type { "file" }, source.content.file)), - source.content -} +source = + element source { + ( (attribute type { "book" }, bibliography.entry.content) | + (attribute type { "file" }, source.content.file) ), + source.content + } source.content.file = - identifier.uri + identifier.uri source.content = - annotation? + annotation? # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keyword & subject ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -148,10 +149,10 @@ head.index = element index { head.index.content } index.content = - (index.w, index.entry?) - | (index.entry, (index.w | index.entry)?) + (index.w, index.entry?) + | (index.entry, (index.w | index.entry)?) head.index.content = - index.entry, index.entry? + index.entry, index.entry? # ~~~~~~ index.w index.w = element w { simple.inlines } @@ -164,102 +165,88 @@ abstract = element abstract { abstract.content } abstract.content = - p+ + p+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cover ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cover = element cover { cover.content } cover.content = - cover.image + cover.image cover.image = element image { cover.image.attributes } cover.image.attributes = - media.id.attribute + media.id.attribute # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ annotation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ annotation = element annotation { annotation.content } annotation.content = - inlines | p+ + inlines | p+ # ============================================================================= -# TOP LEVEL +# DOCUMENT # ============================================================================= -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ top.head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document.head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -top.head = element head { top.head.content } +document.head = element head { document.head.content } -top.head.content = - (title & shorttitle? & subtitle*)? - & identifier* - & copyright* - & collection? - & contributors? - & date? - & place? - & (source, source?)? - & keywordset? - & subjectset? - & indexset? - & abstract? - & cover? - & annotation? +document.head.content = + (title & shorttitle? & subtitle*)? + & identifier* + & copyright* + & collection? + & contributors? + & date? + & place? + & (source, source?)? + & keywordset? + & subjectset? + & indexset? + & abstract? + & cover? + & annotation? # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document = element document { document.attributes, document.content } document.attributes = - document.id.attribute? - & document.type.attribute? - & lang.attribute? + document.id.attribute? + & document.type.attribute? + & lang.attribute? document.id.attribute = attribute id { xsd:NMTOKEN } document.type.attribute = attribute type { xsd:NCName } lang.attribute = attribute xml:lang { xsd:language } document.content = - top.head?, - (division | topic | glossary)+ + document.head?, + (division | document.topic | glossary)+ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ top.topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -top.topic = element topic { top.topic.attributes, top.topic.content } - -top.topic.attributes = - topic.id.attribute? - & topic.type.attribute? - & lang.attribute? -topic.id.attribute = attribute id { xsd:NMTOKEN } -topic.type.attribute = attribute type { xsd:NCName } - -top.topic.content = - top.head?, - header?, - ((section+, bibliography?) | bibliography), - footer? - -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ glossary ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ============================================================================= +# GLOSSARY +# ============================================================================= glossary = element glossary { glossary.attributes, glossary.content } glossary.attributes = - glossary.type.attribute? - & lang.attribute? - & langto.attribute? + glossary.type.attribute? + & lang.attribute? + & langto.attribute? glossary.type.attribute = attribute type { xsd:NCName } langto.attribute = attribute langto { xsd:language } glossary.content = - glossary.entry+ + glossary.entry+ # ============================================================================= -# DIVISION LEVEL +# DIVISION # ============================================================================= # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ division.head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -267,66 +254,83 @@ division.head = element head { division.head.content } division.head.content = - (title & shorttitle? & subtitle*)? - & indexset? - & abstract? - & annotation? + (title & shorttitle? & subtitle*)? + & indexset? + & abstract? + & annotation? # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ division ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ division = element division { division.attributes, division.content } division.attributes = - division.type.attribute? + division.type.attribute? division.type.attribute = attribute type { xsd:NCName } division.content = - division.head?, - front?, - (division | topic)+ + division.head?, + front?, + (division | document.topic)+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ front ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ front = element front { front.content } front.content = - section+ + section+ # ============================================================================= -# COMPONENT LEVEL +# COMPONENTS # ============================================================================= -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ component.head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ component.head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -component.head = element head { component.head.content } +# ~~~~~~ component.head +component.head = element head { document.head.content } -component.head.content = - (title & shorttitle? & subtitle*)? - & contributors? - & date? - & place? - & keywordset? - & subjectset? - & indexset? - & abstract? - & annotation? +# ~~~~~~ document.component.head +document.component.head = element head { document.component.head.content } + +document.component.head.content = + (title & shorttitle? & subtitle*)? + & contributors? + & date? + & place? + & keywordset? + & subjectset? + & indexset? + & abstract? + & annotation? # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic = element topic { topic.attributes, topic.content } +document.topic = + element topic { document.topic.attributes, document.topic.content } topic.attributes = - (topic.id.attribute | xmlid.attribute)? - & topic.type.attribute? - & lang.attribute? + topic.id.attribute? + & topic.type.attribute? + & lang.attribute? +document.topic.attributes = + (topic.id.attribute | xmlid.attribute)? + & topic.type.attribute? + & lang.attribute? +topic.id.attribute = attribute id { xsd:NMTOKEN } +topic.type.attribute = attribute type { xsd:NCName } xmlid.attribute = attribute xml:id { xsd:ID } topic.content = - component.head?, - header?, - ((section+, bibliography?) | bibliography), - footer? + component.head?, + header?, + ((section+, bibliography?) | bibliography), + footer? +document.topic.content = + document.component.head?, + header?, + ((section+, bibliography?) | bibliography), + footer? # ============================================================================= @@ -338,66 +342,66 @@ section.head = element head { section.head.content } section.head.content = - (title & shorttitle? & subtitle*)? - & keywordset? - & subjectset? - & indexset? - & abstract? - & audio* - & annotation? + (title & shorttitle? & subtitle*)? + & keywordset? + & subjectset? + & indexset? + & abstract? + & audio* + & annotation? # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ header ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ header = element header { header.content } header.content = - block+ + block+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ section ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ section = element section { section.attributes, section.content } section.attributes = - xmlid.attribute? - & section.type.attribute? - & lang.attribute? - & for.attribute? + xmlid.attribute? + & section.type.attribute? + & lang.attribute? + & for.attribute? section.type.attribute = attribute type { xsd:NCName } for.attribute = attribute for { xsd:NCName } section.content = - section.head?, - (section+ | block+) + section.head?, + (section+ | block+) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bibliography ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bibliography = element bibliography { bibliography.content } bibliography.content = - bibliography.entry+ + bibliography.entry+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ footer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ footer = element footer { footer.content } footer.content = - block+ + block+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ glossary.entry ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~ glossary.entry -glossary.entry= element entry { - glossary.entry.attributes, glossary.entry.content } +glossary.entry= + element entry { glossary.entry.attributes, glossary.entry.content } glossary.entry.attributes = - xmlid.attribute? + xmlid.attribute? glossary.entry.content = - mainterm, - alt-terms?, - media?, - meanings+, - seealso* + mainterm, + alt-terms?, + media?, + meanings+, + seealso* # ~~~~~~ mainterm mainterm = element mainterm { mainterm.content } @@ -429,9 +433,9 @@ block.head = element head { block.head.content } block.head.content = - (title & shorttitle? & subtitle*)? - & indexset? - & annotation? + (title & shorttitle? & subtitle*)? + & indexset? + & annotation? # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -442,30 +446,30 @@ p = element p { p.content } p.content = - inlines + inlines # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~ list -\list = element list { - block.head?, - ( (attribute type {"ordered"}?, item, item+) - | (attribute type {"glossary"}, item.glossary+) ) -} +\list = + element list { + block.head?, + ( (attribute type {"ordered"}?, item, item+) | + (attribute type {"glossary"}, item.glossary+) ) } # ~~~~~~ item item = element item { item.content } item.content = - inlines - | block+ + inlines + | block+ # ~~~~~~ item.glossary item.glossary = element item { item.glossary.content } item.glossary.content = - label, - block+ + label, + block+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blockquote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -473,20 +477,21 @@ blockquote = element blockquote { blockquote.attributes, blockquote.content } blockquote.attributes = - blockquote.type.attribute? + blockquote.type.attribute? blockquote.type.attribute = attribute type { xsd:NCName } blockquote.content = - block.head?, - (p | speech | \list)+, - attribution? + block.head?, + (p | speech | \list)+, + attribution? # ~~~~~~ attribution attribution = element attribution { attribution.content } -attribution.content = mixed { - sup* & number* & date* & name* & foreign* & acronym* & term* & literal* - & highlight* & emphasis* & mentioned* & note* & warning* } +attribution.content = + mixed { + sup* & number* & date* & name* & foreign* & acronym* & term* & literal* + & highlight* & emphasis* & mentioned* & note* & warning* } # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -494,9 +499,9 @@ speech = element speech { speech.content } speech.content = - speaker?, - stage?, - (p | blockquote)+ + speaker?, + stage?, + (p | blockquote)+ # ~~~~~~ speaker speaker = element speaker { speaker.content } @@ -509,60 +514,60 @@ table = element table { table.attributes, table.content } table.attributes = - table.type.attribute? + table.type.attribute? table.type.attribute = attribute type { xsd:NCName } table.content = - block.head?, - ((thead?, tbody+) | tr+), - table.caption? + block.head?, + ((thead?, tbody+) | tr+), + table.caption? # ~~~~~~ thead, tbody thead = element thead { thead.content } tbody = element tbody { tbody.content } thead.content = - tr+ + tr+ tbody.content = - tr+ + tr+ # ~~~~~~ tr tr = element tr { tr.attributes, tr.content } tr.attributes = - align.attribute? - & valign.attribute? - & cell.type.attribute? + align.attribute? + & valign.attribute? + & cell.type.attribute? align.attribute = attribute align { "left" | "right" | "center" | "justify" } valign.attribute = attribute valign { "top" | "middle" | "bottom" } cell.type.attribute = attribute type { xsd:NCName } tr.content = - (td | th)+ + (td | th)+ # ~~~~~~ td, th td = element td { td.attributes, td.content } th = element th { td.attributes, td.content } td.attributes = - align.attribute? - & valign.attribute? - & colspan.attribute? - & rowspan.attribute? - & cell.type.attribute? + align.attribute? + & valign.attribute? + & colspan.attribute? + & rowspan.attribute? + & cell.type.attribute? colspan.attribute = attribute colspan { xsd:positiveInteger } rowspan.attribute = attribute rowspan { xsd:positiveInteger } td.content = - inlines - | (p | media)+ + inlines + | (p | media)+ # ~~~~~~ table.caption table.caption = element caption { caption.content } caption.content = - inlines - | (p | speech | \list | blockquote)+ + inlines + | (p | speech | \list | blockquote)+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table.cals ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -570,50 +575,50 @@ table.cals = element table { table.attributes, table.cals.content } table.cals.content = - block.head?, - tgroup+, - table.caption? + block.head?, + tgroup+, + table.caption? # ~~~~~~ tgroup tgroup = element tgroup { tgroup.attributes, tgroup.content } tgroup.attributes = - cols.attribute + cols.attribute cols.attribute = attribute cols { xsd:positiveInteger } tgroup.content = - thead.cals?, - tbody.cals + thead.cals?, + tbody.cals # ~~~~~~ thead, tbody thead.cals = element thead { thead.cals.content } tbody.cals = element tbody { tbody.cals.content } thead.cals.content = - row+ + row+ tbody.cals.content = - row+ + row+ # ~~~~~~ row row = element row { row.attributes, row.content } row.attributes = - valign.attribute? + valign.attribute? row.content = - table.cals.entry+ + table.cals.entry+ # ~~~~~~ table.cals.entry -table.cals.entry = element entry { - table.cals.entry.attributes, table.cals.entry.content } +table.cals.entry = + element entry { table.cals.entry.attributes, table.cals.entry.content } table.cals.entry.attributes = - align.attribute? - & valign.attribute? + align.attribute? + & valign.attribute? table.cals.entry.content = - inlines - | (p | media)+ + inlines + | (p | media)+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ media ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -621,68 +626,68 @@ media = element media { media.attributes, media.content } media.attributes = - xmlid.attribute? - & media.type.attribute? + xmlid.attribute? + & media.type.attribute? media.type.attribute = attribute type { xsd:NCName } media.content = - block.head?, - (media.image | audio | video)+, - media.caption?, - link? + block.head?, + (media.image | audio | video)+, + media.caption?, + link? # ~~~~~~ image image = element image { image.attributes } media.image = element image { image.attributes, media.image.content } image.attributes = - media.id.attribute - & image.type.attribute? - & image.zoom.attribute? - & alt.attribute? + media.id.attribute + & image.type.attribute? + & image.zoom.attribute? + & alt.attribute? media.id.attribute = attribute id { xsd:NMTOKEN } -image.type.attribute = attribute type { - "cover" | "thumbnail" | "icon" | "animation" } +image.type.attribute = + attribute type { "cover" | "thumbnail" | "icon" | "animation" } image.zoom.attribute = attribute zoom {"true" | "false"} alt.attribute = attribute alt { text } media.image.content = - copyright?, - hotspot* + copyright?, + hotspot* # ~~~~~~ audio audio = element audio { audio.attributes } audio.attributes = - media.id.attribute - & audio.type? -audio.type = attribute type { "music" | "voice" | "en" | "fr" | "background" - | "smil" } + media.id.attribute + & audio.type? +audio.type = + attribute type { "music" | "voice" | "en" | "fr" | "background" | "smil" } # ~~~~~~ video video = element video { video.attributes } video.attributes = - media.id.attribute + media.id.attribute # ~~~~~~ media.caption media.caption = element caption { caption.attributes, caption.content } caption.attributes = - x.attribute? - & y.attribute? + x.attribute? + & y.attribute? # ~~~~~~ hotspot hotspot = element hotspot { hotspot.attributes, hotspot.content } hotspot.attributes = - x.attribute - & y.attribute - & w.attribute - & h.attribute? - & hotspot.display.attribute? - & hotspot.type.attribute? - & xmlid.attribute? + x.attribute + & y.attribute + & w.attribute + & h.attribute? + & hotspot.display.attribute? + & hotspot.type.attribute? + & xmlid.attribute? x.attribute = attribute x { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } y.attribute = attribute y { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } w.attribute = attribute w { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } @@ -691,27 +696,27 @@ hotspot.type.attribute = attribute type { xsd:NCName } hotspot.content = - ((link | p+ | image | audio | video), (spot, scenario?)?) - | (spot, scenario?) - | empty + ((link | p+ | image | audio | video), (spot, scenario?)?) + | (spot, scenario?) + | empty # ~~~~~~ spot spot = element spot { spot.attributes, spot.content } spot.attributes = - dx.attribute? - & dy.attribute? - & dw.attribute? - & dh.attribute? + dx.attribute? + & dy.attribute? + & dw.attribute? + & dh.attribute? dx.attribute = attribute dx { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} } dy.attribute = attribute dy { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} } dw.attribute = attribute dw { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} } dh.attribute = attribute dh { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} } spot.content = - ((p+ | image), audio?) - | audio - | video + ((p+ | image), audio?) + | audio + | video # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scenario ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -719,15 +724,15 @@ scenario = element scenario { scenario.content } scenario.content = - init*, - onclick* + init*, + onclick* # ~~~~~~ init init = element init { init.attributes } init.attributes = - init.action.attribute - & target.attribute? + init.action.attribute + & target.attribute? init.action.attribute = attribute action { "hide" } target.attribute = attribute target { "hotspot" | "spot" } @@ -735,8 +740,8 @@ onclick = element onclick { onclick.attributes } onclick.attributes = - onclick.action.attribute - & target.attribute? + onclick.action.attribute + & target.attribute? onclick.action.attribute = attribute action { "show" } # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bibliography.entry ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -745,16 +750,16 @@ bibliography.entry = element entry { bibliography.entry.content } bibliography.entry.content = - identifier.ean? - & title - & subtitle? - & copyright? - & collection? - & contributors? - & date? - & place? - & folio? - & pages? + identifier.ean? + & title + & subtitle? + & copyright? + & collection? + & contributors? + & date? + & place? + & folio? + & pages? # ~~~~~~ folio folio = element folio { folio.content } @@ -772,27 +777,27 @@ meanings = element meanings { meanings.attributes, meanings.content } meanings.attributes = - gramcode.attribute? + gramcode.attribute? gramcode.attribute = attribute gramcode { xsd:NMTOKEN } meanings.content = - meaning+ + meaning+ # ~~~~~~ meaning meaning = element meaning { meaning.attributes, meaning.content } meaning.attributes = - meaning.domain.attribute? - & langlevel.attribute? + meaning.domain.attribute? + & langlevel.attribute? meaning.domain.attribute = attribute domain { xsd:NMTOKEN } langlevel.attribute = attribute langlevel { xsd:NMTOKEN } meaning.content = - ((definition, example*, synonym*, antonym*, translation*) + ((definition, example*, synonym*, antonym*, translation*) | (definition?, example*, synonym*, antonym*, translation+) | (definition?, example*, synonym+, antonym*, translation*) | (definition?, example*, synonym*, antonym+, translation*)), - dictum* + dictum* # ~~~~~~ definition definition = element definition { inlines } @@ -813,7 +818,7 @@ seealso = element seealso { seealso.attributes } seealso.attributes = - gloss.ref.attribute + gloss.ref.attribute # ============================================================================= @@ -822,47 +827,47 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -simple.inlines = mixed { - sup* - & sub* - & var* - & number* - & acronym* - & warning* -} +simple.inlines = + mixed { + sup* & sub* + & var* + & number* + & acronym* + & warning* + } -inlines = mixed { - sup* - & sub* - & var* - & number* - & acronym* - & warning* +inlines = + mixed { + sup* & sub* + & var* + & number* + & acronym* + & warning* - & highlight* - & emphasis* - & mentioned* - & literal* - & term* - & example* - & stage* - & name* - & foreign* - & date* - & math* - & quote* - & initial* - & note* - & link* - & anchor* - & index* - & gloss* - & image* - & audio* - & smil* + & highlight* + & emphasis* + & mentioned* + & literal* + & term* + & example* + & stage* + & name* + & foreign* + & date* + & math* + & quote* + & initial* + & note* + & link* + & anchor* + & index* + & gloss* + & image* + & audio* + & smil* - & nowrap* -} + & nowrap* + } # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup, var ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -874,13 +879,14 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ number ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -number = element number { - ( attribute type {"roman"}, number.attributes, number.roman.content ) - | ( number.attributes, number.content) -} +number = + element number { + ( attribute type {"roman"}, number.attributes, number.roman.content ) | + ( number.attributes, number.content) + } number.attributes = - number.value.attribute? + number.value.attribute? number.value.attribute = attribute value { xsd:integer | xsd:decimal } number.content = mixed { sup* & warning* } @@ -939,10 +945,11 @@ name = element name { name.attributes, name.content } name.attributes = - name.of.attribute? -name.of.attribute = attribute of { - "person" | "company" | "book" | "newspaper" | "party" | "movie" - | "painting" } + name.of.attribute? +name.of.attribute = + attribute of { + "person" | "company" | "book" | "newspaper" | "party" | "movie" + | "painting" } name.content = mixed { sup* & number* & acronym* & warning* } @@ -951,7 +958,7 @@ foreign = element foreign { foreign.attributes, foreign.content } foreign.attributes = - lang.attribute? + lang.attribute? foreign.content = inlines @@ -960,8 +967,8 @@ date = element date { date.attributes, date.content } date.attributes = - date.value.attribute - & date.of.attribute? + date.value.attribute + & date.of.attribute? date.value.attribute = attribute value { xsd:date | xsd:gYearMonth | xsd:gYear } date.of.attribute = attribute of { "birth" | "death" } @@ -973,22 +980,22 @@ math = element math { math.attributes, math.content } math.attributes = - xmlid.attribute? - & math.display.attribute? - & math.type.attribute? -math.display.attribute = attribute display { - "wide" | "numbered" | "box" | "numbered-box" } + xmlid.attribute? + & math.display.attribute? + & math.type.attribute? +math.display.attribute = + attribute display { "wide" | "numbered" | "box" | "numbered-box" } math.type.attribute = attribute type { xsd:NCName } math.content = - mixed { sup* & sub* & var* & warning* } - | (preambule?, latex) + mixed { sup* & sub* & var* & warning* } + | (preambule?, latex) # ~~~~~~ latex latex = element latex { latex.attributes, latex.content } latex.attributes = - plain.attritute? + plain.attritute? plain.attritute = attribute plain { xsd:boolean } latex.content = text @@ -1013,7 +1020,7 @@ quote = element quote { quote.content } quote.content = - (phrase, attribution) | inlines + (phrase, attribution) | inlines phrase = element phrase { phrase.content } @@ -1024,8 +1031,8 @@ initial = element initial { initial.content } initial.content = - initial.c, - initial.w? + initial.c, + initial.w? initial.c = element c { text } initial.w = element w { inlines } @@ -1035,12 +1042,12 @@ note = element note { note.attributes, note.content } note.attributes = - note.label.attribute? + note.label.attribute? note.label.attribute = attribute label { text } note.content = - (note.w?, block+) - | inlines + (note.w?, block+) + | inlines note.w = element w { inlines } @@ -1049,7 +1056,7 @@ link = element link { link.attributes, link.content } link.attributes = - (uri.attribute | idref.attribute) + (uri.attribute | idref.attribute) uri.attribute = attribute uri { xsd:anyURI } idref.attribute = attribute idref { xsd:IDREF } @@ -1060,7 +1067,7 @@ anchor = element anchor { anchor.attributes, anchor.content } anchor.attributes = - anchor.id.attribute + anchor.id.attribute anchor.id.attribute = attribute xml:id { xsd:ID } anchor.content = simple.inlines @@ -1070,7 +1077,7 @@ gloss = element gloss { gloss.attributes, gloss.content } gloss.attributes = - gloss.ref.attribute + gloss.ref.attribute gloss.ref.attribute = attribute ref { xsd:NCName } gloss.content = simple.inlines @@ -1080,9 +1087,9 @@ smil = element smil { smil.attributes, smil.content } smil.attributes = - audio.attribute? - & begin.attribute? - & end.attribute? + audio.attribute? + & begin.attribute? + & end.attribute? audio.attribute = attribute audio { xsd:anyURI } begin.attribute = attribute begin { xsd:decimal } end.attribute = attribute end { xsd:decimal } @@ -1100,7 +1107,7 @@ warning = element warning { warning.attributes, warning.content } warning.attributes = - warning.type.attribute? + warning.type.attribute? warning.type.attribute = attribute type { xsd:NCName } warning.content = inlines