<!-- Comics Markup Language --> <!-- VERSION 0.3a --> <!-- Some inlines for simple text markup --> <!ENTITY % inlines 'emphasis | strong | em | s | link'> <!-- Comic's distributable logo (such as an ad banner). ---- * Must contain an image element with an image for the icon. ---- * May contain one URL element with a URL to which the ---- referenced image should point. ---> <!ELEMENT icon (image | url?)> <!-- Titular element for a node --> <!ELEMENT title (#CDATA)> <!-- Textual description of a parent node --> <!ELEMENT description (#PCDATA | %inlines;)> <!-- An external URL. The element form (rather than attribute) is for cases ---- where there can be multiple URLs for something (rare) or where the ---- parent element is mainly a container for a data-collection object ---- (opposed to a textual object, where the character data is the focus). ---> <!ELEMENT url (#CDATA)> <!-- The link element references another location. For references inside ---- the document (identified by unique id attributes) prepend a pound ---- sign (#). Everything else will be considered a URL. ---> <!ELEMENT link (#PCDATA)> <!ATTLIST link target CDATA #REQUIRED> <!-- An image. --> <!ELEMENT image EMPTY> <!ATTLIST image url CDATA #REQUIRED> <!-- Stuff about a person involved in making the comic ---- * Optional firstname is the given name of the person. ---- * Zero or more given middle names for the person ---- * Required surname is the family name of the person ---- * Zero or more nicknames are aliases, pseudonyms, or given nicknames ---- adopted by the person that the person wishes to be published ---- * Zero or more email addresses show how to get ahold of the person ---- * Zero or more URLs describe homepages or other sites related directly to ---- the person ---- * One or more jobs describe in what way the person contributed to the ---- parent element ---> <!ELEMENT person (firstname?, middlename*, surname, nickname*, email*, url*, job+)> <!-- A name can be broken down into four parts (six, actually, including ---- title (Mr., Mrs., Dr., etc.) and suffix (Jr., Esquire, III, etc.). The ---- four parts recognized here are first name (firstname), middle name ---- (middlename), family name (surname), and nicknames (nickname). ---- Only one first name can be given, and suffix can be rolled into surname ---- (of which there can also only be one). Title is considered largely ---- irrelevant for this. Some people have multiple middle names, and of ---- course nicknames are multiplicitous as well. ---> <!ELEMENT firstname (#CDATA)> <!ELEMENT middlename (#CDATA)> <!ELEMENT surname (#CDATA)> <!ELEMENT nickname (#CDATA)> <!-- An email address (and only one) --> <!ELEMENT email (#CDATA)> <!-- Context in which a person contributed something (writer, artist, caterer, etc.) --> <!ELEMENT job (#CDATA)> <!-- ---- * 'emphasis' - Ordinary spoken emphasis, which many comics make explicit ---- by emboldening the appropriate words. ---- * 'strong' - As above, but extra-strong emphasis, outside of normal ---- conversational tones. Many comics would use a larger font for this. ---- * 'em' - Shorthand for 'emphasis' ---- * 's' - Shorthand for 'strong' --> <!ELEMENT emphasis (#PCDATA)> <!ELEMENT strong (#PCDATA)> <!ELEMENT em (#PCDATA)> <!ELEMENT s (#PCDATA)> <!-- The comic is the highest tag wherein all else is contained. ---- * The title of the comic must come first ---- * Zero or more persons listed who are primary contributors to the comic ---- as a whole ---- * Zero or more icons providing logos, ad or link banners, or other ---- image-based information pertaining to the entire comic ---- * An optional description of what the comic is (generally) about ---- * The URL of the comic's main page ---- * Zero or more of one class from among the following: ---- ** Books (physical, publiushed, or conceptual) containing collections ---- of strips ---- ** Chapters (in books or conceptual) containing strips, generally ---- corresponding to plot arcs within the strip ---- ** Individual strips ---- ---- Comics also must have attributes for a date (in UTC format) that the ---- comic was last published and may have an attribute for the ---- language in which the comic is written. ---> <!ELEMENT comic (title, (person* | icon* | description? | url* | (book* | chapter* | strip*) ) )> <!ATTLIST comic published CDATA #REQUIRED xml:lang CDATA #IMPLIED> <!-- A book doesn't have to be a physical, published book. It can also be a ---- conceptual collection of several chapters' worth of strips (for example, ---- in an epic comic where an adventure would be an entire book, and each ---- chapter the various trials during the course of that adventure). ---- * The book must have a title as its first element ---- * May have zero or more people who contributed in large part to this ---- particular book ---- * May have zero or more of one class of the following: ---- ** Chapters containing strips, usually corresponding to a plot arc ---- ** Pages containing strips, almost always corresponding to physical pages ---- ** Individual strips of panels ---- ---- An ISBN attribute is provided in the event that a book is an actual ---- published work. Any further information about the book is out of ---- scope for this DTD, and can be gleaned by a separate consultation of, ---- for example, isbndb.com. ---- ---- The language the book is published in may also be specified. ---> <!ELEMENT book (title, ( (chapter* | page* | strip*) | person*) )> <!ATTLIST book isbn CDATA #IMPLIED xml:lang CDATA #IMPLIED> <!-- A chapter is a conceptual grouping of comic strips. Sometimes it ---- corresponds to a physical group of pages in a book, or sometimes to a ---- strictly abstract group of strips. ---- * Some chapters have a title, which must be specified first ---- * Zero or more persons may be specified who contributed in large part ---- to the entire chapter ---- * A chapter may contain zero or more elements of one class of the following: ---- ** Pages are physical entites that may contain several strips ---- ** Individual strips of panels ---> <!ELEMENT chapter (title?, ( (page* | strip*) | person*) )> <!-- A page is a printed piece of paper in a physical book. ---- * Zero or more strips contained on the page can be described ---- * Zero or more people who contributed to this particular page can be added ---> <!ELEMENT page (strip* | person*)> <!-- An instance of a comic strip ---- * The first element may be the title of the strip ---- * The optional 'person' element can be used to list people who ---- worked on this particular strip, but aren't in the regular credits ---- * The 'url' element can point to the web page where the full strip exists ---- * The 'image' element may provide a list of resources where the strip as ---- a whole can be found ---- * The 'character' element may provide a list of characters who appear ---- somewhere in this strip ---- * The optional 'teaser' element can be used to provide a preview of ---- this strip ---- * One more more panels making up the strip must be specified. ---- ---- Each strip must have a unique serial number ---- Each strip may also provide a date published (in UTC ---- format), and describe what language it's written in. ---> <!ELEMENT strip (title?, (person* | url? | image* | character* | teaser? | panel+) )> <!ATTLIST strip published CDATA #IMPLIED id ID #REQUIRED xml:lang CDATA #IMPLIED> <!-- The teaser briefly describes what happens in this strip, and may ---- be useful in syndication.. ---- * An optional description can be used for syndication to provide a ---- teasing description, making audiences want to go to the actual comic ---- to find out more. ---- * Zero or more panels can be used as previews of the corresponding strip ---> <!ELEMENT teaser (description? | panel*)> <!-- A panel within a strip. A great deal of debate has gone on about what ---- the specification of a "panel" is: if it's a box of ink (pixels) with ---- some drawings inside, if it's an entire image possibly containing ---- several of those, or if it's a concept that defies being wholly ---- encompassed by either of those two definitions. For ComicsML purposes ---- a panel is defined as a single unit of action which is generally ---- contained within a four-sided border (though not always). ---- * The 'url' element points to the web page where this panel is available ---- * The 'image' element is the image in which this panel is contained ---- * An optional description provides a summary of what's going on in this panel ---- * Zero or more characters who appear in this panel ---- * Zero or more captions found within this panel may be specified ---- * Speech found within this panel may be given ---- * Zero or more sound effects occurring in the panel can be shown ---- * Any discreet actions carried out entirely within this panel may be ---- described (succinctly) ---- ---- Additionally, an optional language attribute can describe what language ---- this panel is described in. ---> <!ELEMENT panel (url? | image? | description? | character* | caption* | speech* | sfx* | action*)> <!ATTLIST panel xml:lang CDATA #IMPLIED> <!-- The name of a character in the comic. --> <!ELEMENT character (#PCDATA)> <!-- Description of a specific action taking place in a panel. ---- These should be short descriptions of discreet actions to help ---- determine what's going on in this specific element, not ---- descriptions of extended actions. ---- * Zero or more characters denote who is performing the action. ---> <!ELEMENT action (character* | (#PCDATA | %inlines;) )> <!-- Sound effects happening over the duration of the panel. ---- * Source is the object (or character) emanating the sound effect. ---> <!ELEMENT sfx (#CDATA)> <!ATTLIST sfx source CDATA #IMPLIED> <!-- A misnomer born of lack of a better term: Not necessarily speech, this ---- describes any dialogue (or monologue) shown in the comic: speech, ---- thoughts (usually in puffy bubbles with detached, circular tails), ---- broadcasts (usually shown in spiky bubbles with lightning-liek tails), ---- or any other form of communication. ---- * One or more characters are the source of the speech ---- ---- A language attribute may be specified, denoting what language the speech ---- is in. ---> <!ELEMENT speech (character+, (#PCDATA | %inlines; | inflect | emote) )> <!ATTLIST speech xml:lang CDATA #IMPLIED> <!-- Caption for a panel --> <!ELEMENT caption (#PCDATA | %inlines;)> <!-- Inflection that usually denotes emotion (or lack thereof) or vocal style. ---- The required tone attribute can be used to specify which type of voice ---- or emotion the character is displaying, e.g. envy, cold, anger, ---- confusion, soft, wobbly, or monotone. ---> <!ELEMENT inflect (#PCDATA)> <!ATTLIST inflect tone CDATA #REQUIRED> <!-- Emote is different from inflection in that it doesn't apply to any ---- text. Rather, it's non-vocal (or non-textual) emotion classically ---- represented in comics with nonstandard glyphs. Examples include ---- bang (!), interrobang (?!), silence (...), gasp (~*), and swear (@#!). ---- These textual descriptions (bang, interrobang, etc.) are placed in the ---- type attribute. ---> <!ELEMENT emote (#PCDATA)> <!ATTLIST emote type CDATA #REQUIRED>