# This file is a customization of DocBook V5.0 initially created by # Corbas Consulting Ltd on behalf of Bloomsbury Academic, and # subsequently (2013) considerably extended by Brad Scott, # Brambletye Publishing. # This schema customizes the DocBook Publishers Schema version 1.0 # # Copyright 1992-2007 HaL Computer Systems, Inc., # O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software # Corporation, Norman Walsh, Sun Microsystems, Inc., and the # Organization for the Advancement of Structured Information # Standards (OASIS). # # # # Permission to use, copy, modify and distribute the DocBook schema # and its accompanying documentation for any purpose and without fee # is hereby granted in perpetuity, provided that the above copyright # notice and this paragraph appear in all copies. The copyright # holders make no representation about the suitability of the schema # for any purpose. It is provided "as is" without expressed or implied # warranty. # # If you modify the DocBook schema in any way, label your schema as a # variant of DocBook. See the reference documentation # (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook) # for more information. # # Please direct all questions, bug reports, or suggestions for changes # to the docbook@lists.oasis-open.org mailing list. For more # information, see http://www.oasis-open.org/docbook/. # ------------------- # Version history # # 20171115: added olink/@type='glossary' # 20171005: added otherHardback as @role value on biblioid[@class='isbn'] # 20170602: added philosopherName as @role value on phrase # 20170412: trailing citations in bibliodiv now optional # 20170221: added section/@role='recipe' # 20160720: added annotations as @role value on note # 20160707: added caseName as @role value on phrase; and extension so @label allowed on informalexample # 20160705: added support for legal case reports, incl note/@role # 20160314: added openAccess as value of biblioid/@role # 20160210: added specialEdition as value of biblioid/@role # 20151209: added info as @role value on para; and recording and film as values on bibliomixed # 20151123: added companionWebsite as value of biblioset/@role to support the text block that may sometimes appear # 20151101: added set, pack, otherVolume as permissible valies of biblioid/@role for ISBN types # 20151029: added end-para-note as an option for footnote/@role, for legal texts # 20150930: added period and gender for para/@role for additional reference support # 20150928: added oao as value for para/@role to support Oxford Art Online link blocks # 20150515: added fashionKeywords as a @role option for keywordset; and @role=fpa to mediaobject for FPA articles # removed species as a @role option on bibliomisc # added taxonRank, taxonName, taxonEnglish to phrase/@role # added taxonForeign to foreignphrase/@role # added taxonAuthority to para/@role # 20150313: added @role="lawStatedAt" to date element to support legal books # 20150224: added trade-pbk as a ISBN type # 20141022: added @role=legalContents to preface for tables of cases and statutes etc # extended content model of formalpara for legal texts # 20141008: added @role=embeddedArticle to sidebar for features in complex reference works, eg BEWDF # 20140910: added @role=continuation to phrase for textual notes that indicate when text continues, in case this needs to be displayed differently # 20140908: added @role=snapshotArticle to article for BEWDF and related content # added @role=noPrintRights to releaseinfo # 20140704: added @role ="synonym" | "pronunciation" | "origin" to phrase, for dictionary granularity # added @role="category" | "species" to bibliomisc, for article classification, and natural history content # added @role=articleGroup to article for groups of articles in A-Z reference # added @role=subArticle to section for article groups # 20140623: added @role = "overview-objectives" | "terms" | "exercises-activities" to section and sidebar # 20140619: added keywordset + bibliography @role values for BEWDF and wider support, and new @role values for article # 20140422: added olink @type value # 20140421: added @role=relative to link to support links to media in the data package # 20140311: added @role=toc to itemizedlist to support inline toc processing # 20140125: added @role to link to support better checking of targets # 20140123: allowed drama and poetry within epigraph # 20140121: added @role=impressions on para # 20140113: added @role=titlePage to cover, and @role=imprintLogo to mediaobject # 20140110: added @role=translation to title # 20140108: added @role=description to bibliomisc for other general content in some biblio items # 20131219: added title/@role value "keepWithNext" for some A-Z support # added para[@role=see] for A-Z articles # 20131218: allowed @role on article # 20131213: allowed nested s # ------------------- namespace ctrl = "http://nwalsh.com/xmlns/schema-control/" namespace rng = "http://relaxng.org/ns/structure/1.0" namespace s = "http://www.ascc.net/xml/schematron" namespace db = "http://docbook.org/ns/docbook" default namespace = "http://docbook.org/ns/docbook" include "publishers-51cr.rnc" { # Extensions to the DocBook schema db.epigraph = element epigraph { db.epigraph.attlist, db.epigraph.info, db.attribution?, (db.para.blocks | db.literallayout | db.linegroup | db.dialogue | db.poetry | db.drama)+ } # Legal books sometimes have more than just a para in a numbered item db.formalpara = ## A paragraph with a title element formalpara { db.formalpara.attlist, db.formalpara.info, db.indexing.inlines*, (db.all.blocks)+ } # this has been loosened to allow daggers etc as footnote marks (was NMTOKEN) ## Identifies the desired footnote mark db.footnote.label.attribute = attribute label { text } # some books have nested part divisions, so we need to add db.part here db.components = db.dedication | db.acknowledgements | db.preface | db.chapter | db.appendix | db.article | db.colophon | db.part db.toc.components = db.toc # Add @label to informalexample, since you can get numbered examples, even if they have no title db.informalexample.attlist = db.informalexample.role.attribute? & db.informalexample.label.attribute? & db.common.attributes & db.common.linking.attributes & db.informalexample.floatstyle.attribute? & (db.informalexample.width.attribute | db.informalexample.pgwide.attribute)? # Constraints added to tighten schema # enforce @xml:id in some places db.book.attlist = db.book.role.attribute & db.xml.id.attribute & db.common.base.attributes & db.common.linking.attributes & db.label.attribute? & db.book.status.attribute? db.book.role.attribute = attribute role { "fullText" | "pdfOnly"} db.preface.role.attribute = attribute role { "prelims" | "contributors" | "legalContents" } db.part.role.attribute = attribute role { "front" | "back" | "labelOverRide" } db.article.role.attribute = attribute role { "xref" | "lessonPlan" | "biblioArticle" | "articleGroup" | "snapshotArticle"} db.chapter.role.attribute = attribute role { "notes" | "labelOverRide" } db.appendix.role.attribute = attribute role { "ancillary" } db.section.role.attribute = attribute role { "overview-objectives" | "terms" | "exercises-activities" | "notes" | "labelOverRide" | "bibliography" | "subArticle" | "recipe" } db.figure.role.attribute = attribute role { "labelOverRide" } db.olink.type.attribute = attribute type { "otherBook" | "otherArticle" | "glossary" } db.keywordset.role.attribute = attribute role { "BergGlossary" | "BergKeywords" | "fashionKeywords"} db.bibliography.role.attribute = attribute role { "further-reading" } db.bibliomixed.role.attribute = attribute role { "monograph" | "serial" | "contribution" | "article" | "message" | "website" | "unpublished" | "case" | "legislation" | "other" | "series" | "recording" | "film"} db.bibliomixed.attlist = db.bibliomixed.role.attribute & db.xml.id.attribute & db.common.base.attributes & db.annotations.attribute? db.personname.role.attribute = attribute role { "first-last" | "last-first" } db.bibliomisc.role.attribute = attribute role { "series" | "imprint" | "previousTitle" | "legalRef" | "heading1" | "heading2" | "contributorStatement" | "anon" | "description" | "category"} db.bibliomisc.attlist = db.bibliomisc.role.attribute & db.common.attributes & db.common.linking.attributes db.date.role.attribute = attribute role { "accessed" | "lawStatedAt" } db.pubdate.role.attribute = attribute role { "published" } db.link.role.attribute = attribute role { "bib" | "figure" | "table" | "xref" | "relative" } db.mediaobject.role.attribute = attribute role { "imprintLogo" | "fpa" } db.releaseinfo.role.attribute = attribute role { "noDigitalRights" | "noPrintRights"} db.bridgehead.role.attribute = attribute role { "level1" | "level2" | "level3" | "level4" } db.biblioid.role.attribute = attribute role { "hardback" | "paperback" | "xml" | "epdf" | "epub" | "trade-pbk" | "set" | "pack" | "otherVolume" | "specialEdition" | "openAccess" | "otherHardback" } db.phrase.role.attribute = attribute role { "resp" | "stageDirection" | "source" | "term" | "articleTitle" | "bookTitle" | "periodicalTitle" | "seg" | "synonym" | "pronunciation" | "origin" | "continuation" | "taxonRank" | "taxonName" | "taxonEnglish" | "caseName" | "philosopherName"} db.foreignphrase.role.attribute = attribute role { "taxonForeign" } db.itemizedlist.role.attribute = attribute role { "toc" } db.abstract.role.attribute = attribute role { "blurb" | "authorAbstract" | "extract" } db.abstract.attlist = db.abstract.role.attribute & db.common.attributes & db.common.linking.attributes db.firstname.role.attribute = attribute role { "initials" } db.othername.role.attribute = attribute role { "middle" | "middle-initials" } db.othercredit.role.attribute = attribute role { "etal" } db.lineage.role.attribute = attribute role { "comma-before" } db.imageobject.role.attribute = attribute role { "suppressPDF" } db.legalnotice.role.attribute = attribute role { "CIP" | "CC" | "Open" } db.note.role.attribute = attribute role { "disposition" | "facts" | "history" | "holding" | "judgment" | "annotations" } db.para.role.attribute = attribute role { "right" | "left" | "center" | "fullOut" | "spaceBefore" | "see" | "impressions" | "source" | "taxonAuthority" | "oao" | "gender" | "period" | "info" | "caseNumber" | "court" | "panel" | "hearingDate" | "catchwords" | "legalRepresentation" | "judgmentDate" | "judgmentBy"} db.address.role.attribute = attribute role { "right" | "left" | "center" } db.attribution.role.attribute = attribute role { "right" | "left" | "center" } db.footnote.role.attribute = attribute role { "end-ch-note" | "end-bk-note" | "end-para-note" | "margin1" | "margin2" } db.line.role.attribute = attribute role { "right" | "left" | "center" | "stageDirection" | "partInitial" | "partMedial" | "partFinal"} db.dialogue.role.attribute = attribute role { "line-follows-speaker" | "line-below-speaker" } db.dialogue.attlist = db.dialogue.role.attribute & db.common.attributes & db.common.linking.attributes db.title.role.attribute = attribute role { "series" | "keepWithNext" | "translation" } db.volumenum.role.attribute = attribute role { "series" } db.sidebar.role.attribute = attribute role { "overview-objectives" | "terms" | "exercises-activities" | "sidebar1" | "sidebar2" | "sidebar3" | "sidebar4" | "sidebar5" | "sidebar6" | "sidebar7" | "sidebar8" | "sidebar9" | "plateSection" | "embeddedArticle" } # enforce info/title at chunks db.book.info = db._info.title.req db.preface.info = db._info.title.req db.chapter.info = db._info.title.req db.part.info = db._info.title.req db.acknowledgements.info = db._info.title.req db.appendix.info = db._info.title.req db.glossary.info = db._info.title.req db.bibliography.info = db._info.title.req db.index.info = db._info.title.req db.condition.attribute = attribute condition { "hidden" | "display" | "mathml" | "non-mathml" } db.outputformat.attribute = ## Indicates the output format (for example, print or epub) to which the element applies attribute outputformat { "print"| "web" | "epub" | "e-Only" } db.emphasis.role.attribute = attribute role { "italic" | "bold" | "underline" | "line-through" | "roman" | "monospace" | "smallcaps" | "larger" | "smaller" | "sans-serif" | "serif"} db.emphasis.attlist = db.emphasis.role.attribute & db.common.attributes & db.common.linking.attributes db.bibliolist.role.attribute = attribute role { "inline" } db.relation.attribute = ## Identifies the relationship between the bibliographic elements attribute relation { "book" | "journal" | "article" | "part" | "originalLang" | "translation" | "otherEdition"} db.bibliomset.relation.attribute = db.relation.attribute db.bibliomset.role.attribute = attribute role { text } db.bibliomset.attlist = db.bibliomset.role.attribute? & db.common.attributes & db.common.linking.attributes & db.bibliomset.relation.attribute db.biblioset.role.attribute = attribute role { "publisher" | "isbns" | "series" | "companionWebsite"} db.cover.role.attribute = attribute role { "halfTitleVerso" | "series" | "titlePage"} db.cover.attlist = db.cover.role.attribute & db.common.attributes & db.common.linking.attributes } # extensions to DocBook # new @role on table db.table.role.attribute = attribute role { "labelOverRide" } # new @label on informalexample db.informalexample.label.attribute = db.label.attribute # trailing citations in bibliodiv now optional db.bibliodiv |= ## A section of a bibliography element bibliodiv { db.bibliodiv.attlist, db.bibliodiv.info, db.all.blocks*, (db.biblioentry | db.bibliomixed)* }