<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://bulletin.cstug.cz/ns/CSTUGbulletin" xmlns:xinclude="http://www.w3c.org/2001/XInclude" xmlns:c="http://bulletin.cstug.cz/ns/CSTUGbulletin">
  <xs:import namespace="http://www.w3c.org/2001/XInclude" schemaLocation="xinclude.xsd"/>
  <xs:element name="index">
    <xs:complexType>
      <xs:attribute name="toc" use="required" type="xs:anyURI"/>
      <xs:attribute name="keywords" use="required" type="xs:anyURI"/>
      <xs:attribute name="authors" use="required" type="xs:anyURI"/>
      <xs:attribute name="acronyms" use="required" type="xs:anyURI"/>
      <xs:attribute name="base" type="xs:anyURI"/>
      <xs:attribute name="lastModified">
        <xs:simpleType>
          <xs:union memberTypes="xs:dateTime xs:date"/>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="def.lang.attr">
    <xs:attribute name="lang" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="cze"/>
          <xs:enumeration value="slo"/>
          <xs:enumeration value="eng"/>
          <xs:enumeration value="ger"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="def.id">
    <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="def.xhref">
    <xs:attribute name="indexhref" use="required" type="xs:anyURI"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="def.lastmod">
    <xs:attribute name="lastModified" use="required">
      <xs:simpleType>
        <xs:union memberTypes="xs:dateTime xs:date"/>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="acronymList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:acronym"/>
      </xs:sequence>
      <xs:attributeGroup ref="c:def.xhref"/>
      <xs:attributeGroup ref="c:def.lastmod"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="acronym">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="c:TeX"/>
        <xs:element ref="c:html"/>
        <xs:element ref="c:text"/>
        <xs:element ref="c:meaning"/>
      </xs:choice>
      <xs:attributeGroup ref="c:def.id"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TeX">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="html">
    <xs:complexType mixed="true">
      <xs:group maxOccurs="unbounded" ref="c:def.html.content"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="def.html.content">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:choice>
          <xs:any namespace="##other" processContents="skip"/>
          <xs:any namespace="##local" processContents="skip"/>
        </xs:choice>
        <xs:element ref="c:acro"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:element name="text" type="xs:string"/>
  <xs:element name="meaning" type="xs:string"/>
  <xs:element name="acro" type="xs:NMTOKEN"/>
  <xs:group name="text.or.acro">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:acro"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="keywordList">
    <xs:complexType>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="c:def.keyword"/>
      <xs:attributeGroup ref="c:def.xhref"/>
      <xs:attributeGroup ref="c:def.lastmod"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="def.keyword">
    <xs:sequence>
      <xs:element name="keyword">
        <xs:complexType>
          <xs:choice>
            <xs:element ref="c:ALL"/>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element ref="c:cze"/>
              <xs:element ref="c:slo"/>
              <xs:element ref="c:eng"/>
            </xs:choice>
          </xs:choice>
          <xs:attributeGroup ref="c:def.id"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:element name="ALL">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="cze">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="slo">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="eng">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="authorList">
    <xs:complexType>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="c:def.author"/>
      <xs:attributeGroup ref="c:def.xhref"/>
      <xs:attributeGroup ref="c:def.lastmod"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="def.author">
    <xs:sequence>
      <xs:element name="author">
        <xs:complexType>
          <xs:all>
            <xs:element ref="c:surname"/>
            <xs:element ref="c:firstname"/>
            <xs:element ref="c:initials"/>
            <xs:element minOccurs="0" ref="c:fullname"/>
          </xs:all>
          <xs:attributeGroup ref="c:def.id"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:element name="surname">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="firstname">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="initials">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="fullname">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="toc">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="xinclude:include"/>
        <xs:element ref="c:volume"/>
      </xs:choice>
      <xs:attributeGroup ref="c:def.xhref"/>
      <xs:attribute name="lastModified">
        <xs:simpleType>
          <xs:union memberTypes="xs:dateTime xs:date"/>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="ISSNprinted" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="1211-6661"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="ISSNonline" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="1213-8185"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="volume">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="xinclude:include"/>
        <xs:element ref="c:issue"/>
      </xs:choice>
      <xs:attributeGroup ref="c:def.xhref"/>
      <xs:attribute name="lastModified">
        <xs:simpleType>
          <xs:union memberTypes="xs:dateTime xs:date"/>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="year" use="required" type="c:def.year.type"/>
      <xs:attribute name="id" use="required" type="c:def.year.type"/>
      <xs:attribute name="volume" use="required" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="def.year.type">
    <xs:restriction base="xs:positiveInteger">
      <xs:minInclusive value="1991"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="issue">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="c:article"/>
      </xs:sequence>
      <xs:attributeGroup ref="c:def.xhref"/>
      <xs:attributeGroup ref="c:def.issue.id"/>
      <xs:attributeGroup ref="c:def.issue.num"/>
      <xs:attribute name="href" use="required" type="xs:anyURI"/>
      <xs:attribute name="lastModified">
        <xs:simpleType>
          <xs:union memberTypes="xs:dateTime xs:date"/>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="pdfref" type="xs:anyURI"/>
      <xs:attribute name="firstPage" type="xs:positiveInteger"/>
      <xs:attribute name="lastPage" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="def.issue.num">
    <xs:attribute name="num" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="[1-4](-[2-4])?"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="def.issue.id">
    <xs:attribute name="id" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="[0-9]{4}/[1-4](-[2-4])?"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="article">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="c:def.article.content">
          <xs:attributeGroup ref="c:def.lang.attr"/>
          <xs:attribute name="serial" use="required" type="xs:positiveInteger"/>
          <xs:attributeGroup ref="c:art.id"/>
          <xs:attribute name="firstPage" use="required" type="xs:positiveInteger"/>
          <xs:attribute name="lastPage" type="xs:positiveInteger"/>
          <xs:attribute name="year" type="c:def.year.type"/>
          <xs:attribute name="volume" type="xs:positiveInteger"/>
          <xs:attribute name="num">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:pattern value="[1-4](-[2-4])?"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="href" type="xs:anyURI"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="art.id">
    <xs:attribute name="id" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="[0-9]{4}/[1-4](-[2-4])?#[0-9]+"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:complexType name="def.article.content">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:group ref="c:article.title"/>
      <xs:group ref="c:article.authors"/>
      <xs:group ref="c:article.abstract"/>
      <xs:group ref="c:article.keywords"/>
    </xs:choice>
  </xs:complexType>
  <xs:group name="article.title">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" ref="c:title"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="title">
    <xs:complexType mixed="true">
      <xs:group ref="c:text.or.acro"/>
      <xs:attributeGroup ref="c:def.lang.attr"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="article.authors">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="author" type="xs:NMTOKEN"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="article.keywords">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="keyword" type="xs:NMTOKEN"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="article.abstract">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:abstract"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="abstract">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="c:def.abstract.contents">
          <xs:attributeGroup ref="c:def.lang.attr"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="def.abstract.contents" mixed="true">
    <xs:choice>
      <xs:group ref="c:text.or.acro"/>
      <xs:group ref="c:def.paragraphs"/>
    </xs:choice>
  </xs:complexType>
  <xs:group name="def.paragraphs">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" ref="c:para"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="para" type="c:def.para.contents"/>
  <xs:complexType name="def.para.contents" mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:group ref="c:text.or.acro"/>
      <xs:group ref="c:def.para.elements"/>
    </xs:choice>
  </xs:complexType>
  <xs:group name="def.para.elements">
    <xs:choice>
      <xs:element ref="c:ol"/>
      <xs:element ref="c:ul"/>
      <xs:group ref="c:def.inline"/>
    </xs:choice>
  </xs:group>
  <xs:element name="ol" type="c:def.list"/>
  <xs:element name="ul" type="c:def.list"/>
  <xs:complexType name="def.list">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:li"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="li">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="c:def.inline"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="def.inline">
    <xs:choice>
      <xs:group ref="c:text.or.acro"/>
      <xs:element ref="c:b"/>
      <xs:element ref="c:i"/>
      <xs:element ref="c:tt"/>
      <xs:element ref="c:em"/>
      <xs:element ref="c:quote"/>
      <xs:element ref="c:cmd"/>
    </xs:choice>
  </xs:group>
  <xs:element name="b" type="c:inline.contents"/>
  <xs:element name="i" type="c:inline.contents"/>
  <xs:element name="tt" type="c:inline.contents"/>
  <xs:element name="em" type="c:inline.contents"/>
  <xs:element name="quote" type="c:inline.contents"/>
  <xs:element name="cmd" type="c:inline.contents"/>
  <xs:complexType name="inline.contents" mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:group ref="c:text.or.acro"/>
      <xs:group ref="c:def.inline"/>
    </xs:choice>
  </xs:complexType>
  <xs:element name="bibliography">
    <xs:complexType>
      <xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:cite"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:article"/>
      </xs:choice>
      <xs:attributeGroup ref="c:def.xhref"/>
      <xs:attribute name="lastModified">
        <xs:simpleType>
          <xs:union memberTypes="xs:dateTime xs:date"/>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="cite">
    <xs:complexType>
      <xs:attributeGroup ref="c:art.id"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

