view texts/archimedesOldCVSRepository/archimedes/xsd/archimedes.xsd @ 29:90b1eda1b0a9

Some new special instructions
author Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
date Fri, 02 Dec 2016 14:37:22 +0100
parents 22d6a63640c6
children
line wrap: on
line source

<?xml version="1.0" encoding="UTF-8"?>
<!-- footnotes and margnotes get yanked out of their <p>s, repl. by <arrow>, -->
<!-- and moved to own p. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xlink="http://www.w3.org/1999/xlink">
  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
  <xs:element name="foot.target">
    <xs:complexType mixed="true">
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <!-- e.g. number in front of a footnote -->
  <xs:element name="margin.target">
    <xs:complexType mixed="true">
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="table.target">
    <xs:complexType mixed="true">
      <xs:attribute name="id" use="required" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="arrow.to.target">
    <xs:complexType mixed="true">
      <xs:attribute name="symbol"/>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute ref="xlink:type" default="simple"/>
      <xs:attribute ref="xlink:href"/>
    </xs:complexType>
  </xs:element>
  <!-- reference to removed figure/note. contains mark in text. -->
  <!-- n attribute contains id of referent target -->
  <!-- Can marginalia ever have referring marks in text? -->
  <xs:element name="archimedes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="info"/>
        <xs:element ref="text"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="author">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="back">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="section"/>
        <xs:element minOccurs="0" ref="pb"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="body">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="chap"/>
        <xs:element minOccurs="0" ref="pb"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="comments">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="cvs_file">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="cvs_version">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="chap">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="p"/>
        <xs:element ref="pb"/>
        <xs:element ref="figure"/>
        <xs:element ref="table"/>
        <xs:element ref="subchap1"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="subchap1">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="p"/>
        <xs:element ref="pb"/>
        <xs:element ref="figure"/>
        <xs:element ref="table"/>
        <xs:element ref="subchap2"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="subchap2">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="p"/>
        <xs:element ref="pb"/>
        <xs:element ref="figure"/>
        <xs:element ref="table"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="date">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <!---->
  <xs:element name="emph">
    <xs:complexType>
      <xs:attribute name="type" default="italics">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="italics"/>
            <xs:enumeration value="bold"/>
            <xs:enumeration value="sup"/>
            <xs:enumeration value="sub"/>
            <xs:enumeration value="over"/>
            <xs:enumeration value="smallcaps"/>
            <xs:enumeration value="center"/>
            <xs:enumeration value="roman"/>
            <xs:enumeration value="ul"/>
            <xs:enumeration value="quote"/>
            <xs:enumeration value="other"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="emph.end">
    <xs:complexType>
      <xs:attribute name="type" default="italics">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="italics"/>
            <xs:enumeration value="bold"/>
            <xs:enumeration value="sup"/>
            <xs:enumeration value="sub"/>
            <xs:enumeration value="over"/>
            <xs:enumeration value="smallcaps"/>
            <xs:enumeration value="center"/>
            <xs:enumeration value="roman"/>
            <xs:enumeration value="ul"/>
            <xs:enumeration value="quote"/>
            <xs:enumeration value="other"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <!-- the type attrib. here shld be entitized -->
  <xs:element name="expan">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="foot.target"/>
        <xs:element ref="margin.target"/>
        <xs:element ref="arrow.to.target"/>
        <xs:element ref="pb"/>
        <xs:element ref="lb"/>
        <xs:element ref="emph"/>
        <xs:element ref="emph.end"/>
        <xs:element ref="gap"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="abbr"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <!-- expand tags must be placed around the whole word in which abbreviations occur -->
  <xs:element name="figure">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="place" default="text">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="margin"/>
            <xs:enumeration value="text"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute ref="xlink:type" default="simple"/>
      <xs:attribute ref="xlink:href"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="foreign">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="expan"/>
        <xs:element ref="foot.target"/>
        <xs:element ref="margin.target"/>
        <xs:element ref="arrow.to.target"/>
        <xs:element ref="pb"/>
        <xs:element ref="lb"/>
        <xs:element ref="emph"/>
        <xs:element ref="emph.end"/>
        <xs:element ref="gap"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="lang"/>
    </xs:complexType>
  </xs:element>
  <!-- <foreign> for text within sentences not in the main lang of the text -->
  <!-- or for text within non-default-lang higher elements -->
  <xs:element name="front">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="section"/>
        <xs:element minOccurs="0" ref="pb"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="gap">
    <xs:complexType>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="desc"/>
    </xs:complexType>
  </xs:element>
  <!-- gap is a catch-all tag employed at Perseus and in the TEI to isolate -->
  <!-- uncertain DE markup. It appears here for continuity's sake. -->
  <xs:element name="info">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="author"/>
        <xs:element ref="title"/>
        <xs:element ref="date"/>
        <xs:element ref="place"/>
        <xs:element ref="translator"/>
        <xs:element ref="lang"/>
        <xs:element minOccurs="0" ref="cvs_file"/>
        <xs:element minOccurs="0" ref="cvs_version"/>
        <xs:element minOccurs="0" ref="comments"/>
        <xs:element ref="locator"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <!-- how many of these should be required? -->
  <!-- what about bringing in line with dublin core? -->
  <xs:element name="lang">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="lb">
    <xs:complexType>
      <xs:attribute name="ed"/>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <!-- <lb> occurs at <s> level and at <p> level -->
  <!-- <lb> at end of <s> must be placed after </s> -->
  <!-- <lb> at beginning of <s> must be placed before <s> -->
  <!-- unrecognized symbols will appear inline acc. to special conventions. -->
  <!-- (as in DE specs) -->
  <!-- emph and and emph.end are elements that are quer to the xml structure -->
  <xs:element name="locator">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="p">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="s"/>
        <xs:element ref="figure"/>
        <xs:element ref="pb"/>
        <xs:element ref="lb"/>
        <xs:element ref="emph"/>
        <xs:element ref="emph.end"/>
        <xs:element ref="gap"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type" default="main">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="main"/>
            <xs:enumeration value="table"/>
            <xs:enumeration value="marked"/>
            <xs:enumeration value="foot"/>
            <xs:enumeration value="margin"/>
            <xs:enumeration value="list"/>
            <xs:enumeration value="head"/>
            <xs:enumeration value="caption"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!-- captions go in paragr's immediately after figure, with arrow.to.target -->
  <!-- table is allowed as val for type attr for backward compatibility -->
  <!-- pb can occur within p but NOT at the start or end -->
  <xs:element name="pb">
    <xs:complexType>
      <xs:attribute name="ed"/>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute ref="xlink:type" default="simple"/>
      <xs:attribute ref="xlink:href"/>
      <xs:attribute name="pagenum"/>
    </xs:complexType>
  </xs:element>
  <!-- the "ed"  attribute gives the edition in which the page break occurs. If no -->
  <!-- edition is given, it is assumed to be that given in info -->
  <!-- pagenum gives the page number actually printed on the page. -->
  <!-- n gives the page number numbered consecutively from page 1 of text. -->
  <!-- pb can occur inside <s> etc. and inside <p> and inside <chap> -->
  <!-- <pb> at end of <p> must be placed after </p> -->
  <xs:element name="place">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="publisher">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="s">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="foreign"/>
        <xs:element ref="figure"/>
        <xs:element ref="expan"/>
        <xs:element ref="foot.target"/>
        <xs:element ref="margin.target"/>
        <xs:element ref="arrow.to.target"/>
        <xs:element ref="pb"/>
        <xs:element ref="lb"/>
        <xs:element ref="emph"/>
        <xs:element ref="emph.end"/>
        <xs:element ref="gap"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute ref="xml:space" default="preserve"/>
    </xs:complexType>
  </xs:element>
  <!--
    mdh 2003-07-23
    
    I've given <s> the special attribute xml:space="preserve", so that
    XML processors will respect whitespace within <s> and its descendants.
    See: "Extensible Markup Language (XML) 1.0", http://www.w3.org/TR/REC-xml,
    sec. 2.10 "White Space Handling".
  -->
  <xs:element name="section">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="p"/>
        <xs:element ref="pb"/>
        <xs:element ref="figure"/>
        <xs:element ref="table"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="table">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="table.target"/>
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="row"/>
          <xs:element minOccurs="0" ref="pb"/>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <!--
    order is now:
    <table><table.target/><row>...</row><pb>
    i.e. <table> is equiv. to <p type=margin>
  -->
  <xs:element name="row">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="cell"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="cell">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="foreign"/>
        <xs:element ref="expan"/>
        <xs:element ref="foot.target"/>
        <xs:element ref="margin.target"/>
        <xs:element ref="arrow.to.target"/>
        <xs:element ref="pb"/>
        <xs:element ref="lb"/>
        <xs:element ref="emph"/>
        <xs:element ref="emph.end"/>
        <xs:element ref="gap"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="text">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="pb"/>
        <xs:element ref="front"/>
        <xs:element minOccurs="0" ref="pb"/>
        <xs:element ref="body"/>
        <xs:element minOccurs="0" ref="pb"/>
        <xs:element minOccurs="0" ref="back"/>
      </xs:sequence>
      <xs:attribute name="type"/>
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
  <!-- if front and back are going to be optional, then pb can be allowed to -->
  <!-- occur only within front body back. -->
  <xs:element name="title">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
      <xs:attribute name="type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="translator">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:attribute name="n"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
<!-- entities are included below here (2001-11-14; mdh) -->