[osis-core] Help with mixed content
Patrick Durusau
osis-core@bibletechnologieswg.org
Sun, 12 May 2002 15:30:27 -0400
This is a multi-part message in MIME format.
--------------040100000506010608060101
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Guys (esp. Todd who has XMLSpy),
Having trouble getting the following to validate:
<verse bibleCite="Matt.1.1">The book of the generation of <name type="person" nameKey="Jesus">Jesus Christ</name>,
the son of <name nameKey="David" type="person">David</name>, the son of
<name nameKey="Abraham" type="person">Abraham</name>.</verse>
XMLSpy objects to the mixed content.
Relevant portions of the schema:
<xs:element name="verse">
<xs:complexType mixed = "true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:group ref="phraseGroup"/>
</xs:sequence>
<xs:attribute name="bibleCite" type="xs:string"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
<xs:attributeGroup ref="segmentAttributes"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
OK, that looks like mixed type to me, then the pharse group:
<xs:group name="phraseGroup">
<xs:annotation>
<xs:documentation>
<p>A group for common annotations recorded on a text.</p>
</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element ref="abbr" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="blockQuote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="divineName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="foreign" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="inscription" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="lineGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="list" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mentioned" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="milestone" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="name" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="note" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="q" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="reference" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="seg" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="speech" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="title" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="transChange" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="w" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:group
I have also attached the entire schema.
Sure it is something simple I am overlooking.
Suggestions? I would really like to get this finalized this week. We
really need to put a stake in it and drive on.
Patrick
--
Patrick Durusau
Director of Research and Development
Society of Biblical Literature
pdurusau@emory.edu
--------------040100000506010608060101
Content-Type: text/plain;
name="OSISCore_1.3.xsd"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="OSISCore_1.3.xsd"
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified">
<xs:annotation>
<xs:documentation>
<date>2002-05-06</date>
<version>1.0.PR.1</version>
<p> This is the first complete revision of the OSIS schema since the meetings in Rome. I have attempted to use XML comments to allow the original text to remain along side the changes and have inserted a number of comments based upon the discussions in Rome. I will also prepare a clean version of the new schema for use in authoring/conversion, as this one is more suited for discussion of the various changes.</p>
<p> Note that I have substantially reorganized the schema to (hopefully) make it easier to follow. New organization starts with the high level containers, osisText for example, as the ultimate container element (name subject to debate/change), which contains a header (primarily OEB/Dublin Core elements, that replace our title/titlePart elements. Most of the elements in the metadata header are optional. That is followed by the usual suspects, front, body and back. I then follow with the larger divisions, front, body and back. Those large divisions are followed by the various elements and content models for those elements. After all the structural stuff, then I have the simpleTypes and other material.</p>
<p>Among the more significant changes are the loss of milestones and their replacement with segmentation of elements that bear next and previous attributes. The reasoning for this change was that boundary crossing elements are the exception and not the rule, hence only those cases should require unusual markup, as opposed to requiring milestones for all possible crossing elements. Since elements require a known context (unlike milestones) it will be possible to use the key/keyref mechanism for validation of these references.</p>
<date>2002-05-07</date>
<version>1.0.PR.02</version>
<p>Reformed element names,
collasped date and title into
single elements, simplied div
model</p>
<date>2002-05-10</date>
<version>1.0.PR.03</version>
<p>corrected typos</p>
<date>2002-05-12</date>
<version>1.0.PR.04</version>
<p>Added q back, key/keyRef
mechanisms, regexes for validation.</p>
</xs:documentation>
</xs:annotation>
<xs:element name="osisText">
<xs:annotation>
<xs:documentation>
<p>Header and body elements are required and in that sequence. Front and back are optional (front primarily optional to allow quick start on encoding, most texts will have one.</p>
<p>Rome changes: Added header, loses title/titlePart (within divs/books/chaps/etc. becomes recursive head). Made front optional to allow quick start to encoding. Header has Dublin Core materials drawn from OEB and the role attribute cut down to ten (10) possible roles. See the final section of the schema for roles and other simple type declarations.</p>
<p>Attribute changes: note that attributes now distinguish both the work and refSys for a text.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="header" minOccurs="1"/>
<xs:element ref="front" minOccurs="0"/>
<xs:element ref="body" minOccurs="1"/>
<xs:element ref="back" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="work" type="osisWork" use="optional"/>
<xs:attribute name="refSys" type="osisRef" use="optional"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="osisWork">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="osisRef">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="header">
<xs:annotation>
<xs:documentation>
<p>Rome changes: Most of this information was in front and required in the earlier version of OSIS. Have moved the metadata information into the header element and made most of it optional. Only dc:title required. Note that we recommned revisionDesc be used and if it is, it does have required sub-elements of date and resp. </p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group ref="frontGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:group name="frontGroup">
<xs:element ref="title" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="contributor" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="creator" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="resp" type="xs:string" use="required"/>
<xs:attribute name="role" type="role" use="required"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="subject" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="description" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="publisher" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="type" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="format" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="identifier" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="source" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="language" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="relation" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="coverage" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="rights" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="revisionDesc" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element ref="date" minOccurs="1"/>
<xs:element ref="resp" minOccurs="1"/>
<xs:group ref="phraseGroup" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attribute name="TEIform" fixed="revisionDesc"/>
</xs:complexType>
</xs:element>
</xs:group>
<xs:element name="front">
<xs:annotation>
<xs:documentation>
<p>Note that with the addition of the header element, the various sub-elements such as titleGroup, author, date, copyright, publisher, pubPlace, revisionDesc have been removed. Not really compatible with TEI anyway. Now contains only div and global attributes. Note that div is recursive and contains generic content. Note that title is recursive so can have subtitles and the like.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="title" minOccurs="0"/>
<xs:element ref="div" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="body">
<xs:annotation>
<xs:documentation>
<p>Major Rome changes were the elimination of the titleGroup, since that information is carried in the header. The div element contains a recursive header for title type information that should be recorded in the body.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="title" minOccurs="0"/>
<xs:element ref="div" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attribute name="TEIform" fixed="body"/>
<xs:attributeGroup ref="inReferenceAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="back">
<xs:complexType>
<xs:sequence>
<xs:element ref="title" minOccurs="0"/>
<xs:element ref="div" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attribute name="TEIform" fixed="back"/>
<xs:attributeGroup ref="inReferenceAttributes"/>
</xs:complexType>
</xs:element>
<!-- end of main structural elements of header, front, body and back -->
<!-- Begin listing of lower level elements and their content groups -->
<xs:element name="abbr">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="expansion" type="xs:string" use="optional"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="blockQuote">
<xs:annotation>
<xs:documentation>
<p>My notes indicate salute, note, p, phrase-class, close-salute-signed. Should all these be separate elements in the sequence or should close contain salute-signed? Have modeled it that way but open to suggestions.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="salute" minOccurs="0" maxOccurs="1"/>
<xs:element ref="p" minOccurs="0" maxOccurs="unbounded"/>
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="speaker" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="close" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="catchWord">
<xs:complexType mixed="true">
<xs:sequence>
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="close">
<xs:annotation>
<xs:documentation>
<p>Note that both salute and signed contain phrase-class elements.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="salute" minOccurs="0" maxOccurs="1"/>
<xs:element ref="signed" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="date">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
<xs:attribute name="calendar" type="calendar" use="optional" default="ISO"/>
<xs:attribute name="value" use="optional"/>
<xs:attribute name="TEIform" fixed="date"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="calendar">
<xs:restriction base="xs:string">
<xs:enumeration value="Chinese"/>
<xs:enumeration value="Gregorian"/>
<xs:enumeration value="Islamic"/>
<xs:enumeration value="ISO"/>
<xs:enumeration value="Jewish"/>
<xs:enumeration value="Julian"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="div">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="div" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="title" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="p" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="close" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="figure" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="lineGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="salute" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="speech" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="verse" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="lang" type="languageType" use="optional"/>
<xs:attribute name="type" type="divType" use="optional"/>
<xs:attribute name="n" type="xs:string" use="optional"/>
<xs:attribute name="divTitle" type="xs:string" use="optional"/>
<xs:attributeGroup ref="inReferenceAttributes"/>
<xs:attributeGroup ref="segmentAttributes"/>
<xs:attribute name="TEIform" fixed="div"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="divType">
<xs:union memberTypes="divsOSIS attributeExtension"/>
</xs:simpleType>
<xs:simpleType name="divsOSIS">
<xs:annotation>
<xs:documentation>
<p>Enumerated list of types of div elements in an OSIS text. Note that users can add types of divs using the x- extension prefix on their type names.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="appendix"/>
<xs:enumeration value="book"/>
<xs:enumeration value="chapter"/>
<xs:enumeration value="concordance"/>
<xs:enumeration value="glossary"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="divineName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="figure">
<xs:complexType>
<xs:sequence>
<xs:element name="caption" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="src" type="xs:string" use="required"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="foreign">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="head">
<xs:complexType>
<xs:sequence>
<xs:element ref="head" minOccurs="0" maxOccurs="unbounded"/>
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="inscription">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType mixed="true">
<xs:sequence maxOccurs="unbounded">
<xs:element ref="label" minOccurs="0" maxOccurs="1"/>
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="label">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="line">
<xs:complexType mixed="true">
<xs:sequence maxOccurs="unbounded">
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="lineGroup">
<xs:complexType>
<xs:sequence>
<xs:element ref="lineGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="line" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element ref="list" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="head" minOccurs="0"/>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="mentioned">
<xs:complexType mixed="true">
<xs:sequence>
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="milestone">
<xs:annotation>
<xs:documentation>
<p>Added to make explicit the shadown milestone requested by BobP. Don't think you need a loc attribute with the inReferenceAttribute group but am open to comments. Since you have the ref attribute in inRefAttributes. May want to add the generic n attribute so people can make pages, etc.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="inReferenceAttributes"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="name">
<xs:annotation>
<xs:documentation>
<p>An element with an attribute simiar to role that allows a semi-open attribute for specifying what type of name is being recorded in the markup. Examples include person, geographic, etc. Note the general format for enumerated values: a list is declared as a simpleType and then followed by a union statement combining that list with the attributeExtension simpleType which contains a regular expression constraining additions to the OSIS enumerated list to begin with the string "x-". This allows OSIS to speify a list of values and yet allow users to extend that list.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="nameType" type="nameType" use="optional"/>
<xs:attribute name="regular" type="xs:string" use="optional"/>
<xs:attribute name="nameKey" type="xs:string" use="optional"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="namesOSIS">
<xs:annotation>
<xs:documentation>
<p>Enumerated list of name types commonly found in biblical texts.</p>
<p>The attribute nonhuman was inserted to allow the marking of names that are not encoded with the element divineName. The divineName element was introduced to treat name occurences that are treated differently, i.e., the setting of Lord in small caps, to represent a name in the original text. Rather than attempt to enumerate all the varying traditions for such practices, the divineName element simply recognizes it and allows encoders to follow that practice (or not) as they desire.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="geographic"/>
<xs:enumeration value="holiday"/>
<xs:enumeration value="nonhuman"/>
<xs:enumeration value="person"/>
<xs:enumeration value="ritual"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nameType">
<xs:union memberTypes="namesOSIS attributeExtension"/>
</xs:simpleType>
<xs:element name="note">
<xs:annotation>
<xs:documentation>
<p>Note that note is now recursive, which allows the elimination of notePart. Has enumerated list of note types.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence maxOccurs="unbounded">
<xs:element ref="note" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="catchWord" minOccurs="0" maxOccurs="1"/>
<xs:element ref="p" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="reading" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="ID" type="xs:string" use="optional"/>
<xs:attribute name="lang" type="languageType" use="optional"/>
<xs:attribute name="n" type="xs:string" use="optional"/>
<xs:attribute name="resp" type="xs:string" use="optional"/>
<xs:attribute name="type" type="noteType" use="optional"/>
<xs:attribute name="TEIform" fixed="note"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="noteType">
<xs:union memberTypes="notesOSIS attributeExtension"/>
</xs:simpleType>
<xs:simpleType name="notesOSIS">
<xs:annotation>
<xs:documentation>
<p>Enumerated list of note types for biblical texts. This list can be extended using the <x-> extension in front of other note types added by users.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="allusion"/>
<xs:enumeration value="alternative"/>
<xs:enumeration value="background"/>
<xs:enumeration value="citation"/>
<xs:enumeration value="devotional"/>
<xs:enumeration value="exegesis"/>
<xs:enumeration value="explanation"/>
<xs:enumeration value="study"/>
<xs:enumeration value="translation"/>
<xs:enumeration value="variant"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="p">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="verse" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="q">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="outReferenceAttributes"/>
<xs:attributeGroup ref="segmentAttributes"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="reading">
<xs:complexType mixed="true">
<xs:sequence maxOccurs="unbounded">
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="reference">
<xs:annotation>
<xs:documentation>
<p>Note otPassage and ntProphecy have been dropped as elements. Actually references, inter-textual for post-modernists, and should be marked as such. Can use extensible type attribute to denote a typology of references. I have added the target attribute as xs:string but we may (or may not) want to force some validation on that attribute. Tend to favor not, since we don't know what reference someone might wish to point to and validity is their problem.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="referenceTo" type="referenceType" use="optional"/>
<xs:attribute name="target" type="xs:string"/>
<xs:attribute name="targetEnd" type="xs:string"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="referenceType">
<xs:union memberTypes="referenceOSIS attributeExtension"/>
</xs:simpleType>
<xs:simpleType name="referenceOSIS">
<xs:annotation>
<xs:documentation>
<p>Partial list reference types for biblical texts. This list can be extended using the <x-> extension in front of other note types added by users.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="allusion"/>
<xs:enumeration value="paraphrase"/>
<xs:enumeration value="quotation"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="resp">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="who" type="xs:string"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="salute">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="who" type="xs:string"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="seg">
<xs:annotation>
<xs:documentation>
<p>Decided to not abuse the seg element from TEI as a milestone. Returned to its traditional role of marking arbitrary segments of text (although it must properly nest). Should give us a little more flexibility in allowing markup of phrase level stuff we have not thought of up to this point.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence>
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="segmentAttributes"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="signed">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="who" type="xs:string"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="speech">
<xs:complexType>
<xs:sequence>
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="segmentAttributes"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="speaker">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="who" type="xs:string"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="title">
<xs:complexType mixed="true">
<xs:sequence maxOccurs="unbounded">
<xs:group ref="phraseGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attribute name="TEIform" fixed="title"/>
</xs:complexType>
</xs:element>
<xs:element name="transChange">
<xs:annotation>
<xs:documentation>
<p>Bad name but all we could think of, please suggest better! Takes the place of ampRead, supplied, changedTenes. Supply types to enumerate added, deleted, amplified, changed, moved, other possibles, sourceComparison, sourceTrace, sourceMatch, transChange. Have not enumerated all in the list below but just a couple to act as place holders while we work out the scope of this element.</p>
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="note" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="w" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="resp" type="xs:string" use="optional"/>
<xs:attribute name="transChange" type="transChangeType" use="optional"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="transChangeType">
<xs:union memberTypes="transChangeOSIS attributeExtension"/>
</xs:simpleType>
<xs:simpleType name="transChangeOSIS">
<xs:annotation>
<xs:documentation>
<p>Partial list of translation change types for biblical texts. This list can be extended using the <x-> extension in front of other types added by users.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="added"/>
<xs:enumeration value="amplified"/>
<xs:enumeration value="changed"/>
<xs:enumeration value="deleted"/>
<xs:enumeration value="moved"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="verse">
<xs:complexType mixed = "true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:group ref="phraseGroup"/>
</xs:sequence>
<xs:attribute name="bibleCite" type="xs:string"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
<xs:attributeGroup ref="segmentAttributes"/>
<xs:attributeGroup ref="globalAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="w">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="POS" type="attributeExtension" use="optional"/>
<xs:attribute name="morph" type="attributeExtension" use="optional"/>
<xs:attribute name="lemma" type="attributeExtension" use="optional"/>
<xs:attribute name="gloss" type="xs:string" use="optional"/>
<xs:attribute name="xlit" type="xs:string" use="optional"/>
<xs:attribute name="TEIform" fixed="w"/>
<xs:attributeGroup ref="globalAttributes"/>
<xs:attributeGroup ref="outReferenceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<!-- end new element listing -->
<!-- Global Attributes and simpleTypes -->
<xs:simpleType name="attributeExtension">
<xs:annotation>
<xs:documentation>
<p>Where attribute values are declared, users can extend the allowed values by prepending the string "x-" to the values they desire to use. Attribute values are declared as the union of an enumerated set of values and this attributeExtension type.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="x-([^\s]+)"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="globalAttributes">
<xs:attribute name="ews" type="xs:string" use="optional"/>
<xs:attribute name="ID" type="xs:ID" use="optional"/>
<xs:attribute name="lang" type="languageType" use="optional"/>
<xs:attribute name="type" type="xs:string" use="optional"/>
<xs:attribute name="n" type="xs:string" use="optional"/>
</xs:attributeGroup>
<xs:attributeGroup name="inReferenceAttributes">
<xs:attribute name="ref" type="xs:string" use="optional"/>
<xs:attribute name="refSys" type="xs:string" use="optional"/>
<xs:attribute name="work" type="xs:string" use="optional"/>
</xs:attributeGroup>
<xs:attributeGroup name="outReferenceAttributes">
<xs:attribute name="ref" type="xs:string" use="optional"/>
</xs:attributeGroup>
<xs:attributeGroup name="segmentAttributes">
<xs:attribute name="next" type="xs:string" use="optional"/>
<xs:attribute name="prev" type="xs:string" use="optional"/>
</xs:attributeGroup>
<!-- Element Groups -->
<xs:group name="phraseGroup">
<xs:annotation>
<xs:documentation>
<p>A group for common annotations recorded on a text.</p>
</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element ref="abbr" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="blockQuote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="divineName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="foreign" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="inscription" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="lineGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="list" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mentioned" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="milestone" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="name" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="note" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="q" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="reference" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="seg" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="speech" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="title" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="transChange" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="w" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:group>
<!-- SimpleType Declarations -->
<!-- Role simpleType for the header element -->
<xs:simpleType name="role">
<xs:annotation>
<xs:documentation>
<p>This is a selected set of the most common role names likely to be needed for basic encoding. The full set of relator codes on which this listing (and the descriptions are based, was taken from: MARC Code List: Relator Codes -- Term Sequence (http://lcweb.loc.gov/marc/relators/re0002r1.html). This listing will be followed for later OSIS modules.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="art">
<xs:annotation>
<xs:documentation>Artist: Use for a person (e.g., a painter) who conceives, and perhaps also implements, an original graphic design or work of art, </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="aut">
<xs:annotation>
<xs:documentation>Author: Use for a person or corporate body chiefly responsiblefor the intellectual or artistic content of a work, usually printed text. This term may also be used when more than one person or body bears such responsibility.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="aft">
<xs:annotation>
<xs:documentation>Author of afterword, colophon, etc.: Use for a person or corporate body responsible for an afterword, postface, colophon, etc. but who is not the chief author of a work.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="aui">
<xs:annotation>
<xs:documentation>Author of introduction, etc.: Use for a person or corporate body responsible for an introduction, preface, foreword, or other critical introductory matter, but who is not the chief author.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="clb">
<xs:annotation>
<xs:documentation>Collaborator: Use for a person or corporate body that takes a limited part in the elaboration of a work of another person or corporate body that brings complements (e.g., appendices, notes) to the work.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="cwt">
<xs:annotation>
<xs:documentation>Commentator for written text: Use for a person or corporate body responsible for the commentary or explanatory notes about a text.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="com">
<xs:annotation>
<xs:documentation>Compiler: Use for a person who produces a work or publication by selecting and putting together material from the works of various persons or bodies.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="ctb">
<xs:annotation>
<xs:documentation>Contributor: Use for one whose work has been contributed to a larger work, such as an anthology, serial publication, or other compilation of individual works. Do not use for someone whose sole function in relation to a work is as author, editor, compiler or translator.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="edt">
<xs:annotation>
<xs:documentation>Editor: Use for a person who prepares for publication a work not primarily his/her own, such as by elucidating text, adding introductory or other critical matter, or technically directing an editorial staff.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="trl">
<xs:annotation>
<xs:documentation>Translator: Use for a person who renders a text from one language into another, or from an older form of a language into the modern form.</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="languageType">
<xs:annotation>
<xs:documentation>
<p>A regex to validate ISO and Ethnologue language codes.</p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(x|i|[A-Za-z]{2,3})(-[A-Za-z0-9]{2,8}){0,}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
--------------040100000506010608060101--