<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"
  xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
  <xs:import
    namespace="http://www.w3.org/1999/xhtml/datatypes/"
    schemaLocation="xhtml-datatypes-1.xsd"/>
  <xs:annotation>
    <xs:documentation>
      This is the XML Schema module of common content models for SLXHTML.
      SLXHTML is a profile of XHTML (see W3C copyright notice below).

      @author: Gregor Karlinger gregor.karlinger@cio.gv.at
      $Id: slxhtml-model-1.xsd,v 1.4 2004/05/12 11:35:31 karlinger Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>
  <xs:annotation>
    <xs:documentation> 
      XHTML Document Model 
      This module describes the groupings of elements/attributes 
      that make up common content models for XHTML elements. 
      XHTML has following basic content models: 
      xhtml.Inline.mix; character-level elements
      xhtml.Block.mix; block-like elements, e.g., paragraphs and lists
      xhtml.Flow.mix; any block or inline elements 
      xhtml.HeadOpts.mix; Head Elements 
      xhtml.InlinePre.mix; Special class for pre content model 
      xhtml.InlineNoAnchor.mix; Content model for Anchor 
      
      Any groups declared in this module may be used to create 
      element content models, but the above are considered 'global' 
      (insofar as that term applies here). XHTML has the
      following Attribute Groups 
      xhtml.Core.extra.attrib 
      xhtml.I18n.extra.attrib
      xhtml.Common.extra 
      
      The above attribute Groups are considered Global 
    </xs:documentation>
  </xs:annotation>  
    
  <xs:attributeGroup name="xhtml.I18n.extra.attrib">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: attributeGroup "dir.attrib" removed.
      </xs:documentation>
    </xs:annotation>  
  </xs:attributeGroup>

  <xs:attributeGroup name="xhtml.Common.extra">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: attributeGroup "style.attrib" removed.
       </xs:documentation>
    </xs:annotation>      
  </xs:attributeGroup>

  <xs:attributeGroup name="xhtml.Core.extra.attrib">
  </xs:attributeGroup>

  <xs:attributeGroup
    name="xhtml.Global.core.extra.attrib">
    <xs:annotation>
      <xs:documentation> Extended Global Core Attributes </xs:documentation>
    </xs:annotation>
  </xs:attributeGroup>
  <xs:attributeGroup
    name="xhtml.Global.I18n.extra.attrib">
    <xs:annotation>
      <xs:documentation> Extended Global I18n attributes </xs:documentation>
    </xs:annotation>
  </xs:attributeGroup>
  <xs:attributeGroup
    name="xhtml.Global.Common.extra">
    <xs:annotation>
      <xs:documentation> Extended Global Common Attributes </xs:documentation>
    </xs:annotation>
  </xs:attributeGroup>
  
  <xs:group name="xhtml.HeadOpts.mix">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "script", "meta", "link", "object" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:choice>
      <xs:element
        name="style"
        type="xhtml.style.type"/>
    </xs:choice>
  </xs:group>

  <xs:group
    name="xhtml.head.content">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: Only a single instance of element "style" is 
        allowed apart from the obligatory "title" element.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
        <xs:element
          name="title"
          type="xhtml.title.type"/>
        <xs:group
          ref="xhtml.HeadOpts.mix"/>
    </xs:sequence>
  </xs:group>
  <!--
    ins and del are used to denote editing changes
  -->
  <xs:group name="xhtml.Edit.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "ins", "del" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:choice/>
  </xs:group>
  <!--
    script and noscript are used to contain scripts
    and alternative content
  -->
  <xs:group name="xhtml.Script.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "script", "noscript" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:choice/>
  </xs:group>
  <xs:group name="xhtml.Misc.extra">
    <xs:sequence/>
  </xs:group>
  <!--
    These elements are neither block nor inline, and can
    essentially be used anywhere in the document body.
  -->
  <xs:group
    name="xhtml.Misc.class">
    <xs:choice>
      <xs:group
        ref="xhtml.Edit.class"/>
      <xs:group
        ref="xhtml.Script.class"/>
      <xs:group
        ref="xhtml.Misc.extra"/>
    </xs:choice>
  </xs:group>
  <!-- Inline Elements -->
  <xs:group
    name="xhtml.InlStruct.class">
    <xs:choice>
      <xs:element
        name="br"
        type="xhtml.br.type"/>
      <xs:element
        name="span"
        type="xhtml.span.type"/>
    </xs:choice>
  </xs:group>
  <xs:group
    name="xhtml.InlPhras.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "dfn", "samp", "kbd", "var", "q" , "abbr" and
        "acronym" removed.
      </xs:documentation>
    </xs:annotation>      
    <xs:choice>
      <xs:element
        name="em"
        type="xhtml.em.type"/>
      <xs:element
        name="strong"
        type="xhtml.strong.type"/>
      <xs:element
        name="code"
        type="xhtml.code.type"/>
      <xs:element
        name="cite"
        type="xhtml.cite.type"/>
    </xs:choice>
  </xs:group>
  <xs:group
    name="xhtml.InlPres.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "tt", "i", "b", "big", "small", "sub", "sup" removed.
      </xs:documentation>
    </xs:annotation>      
    <xs:sequence/>
  </xs:group>
  <xs:group name="xhtml.I18n.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: element "bdo" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:sequence/>
  </xs:group>
  <xs:group name="xhtml.Anchor.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: element "a" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:sequence/>
  </xs:group>
  <xs:group
    name="xhtml.InlSpecial.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "map", "object" removed.
      </xs:documentation>
      <xs:documentation>
        MOCCA 1.0: element "img" removed
      </xs:documentation>
    </xs:annotation>      
    <!-- <xs:choice>
      <xs:element
        name="img"
        type="xhtml.img.type"/>
    </xs:choice>-->
    <xs:sequence/>
  </xs:group>
  <xs:group name="xhtml.InlForm.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "input", "select", "textara", "lable", "button" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:sequence/>
  </xs:group>
  <xs:group
    name="xhtml.Inline.extra">
    <xs:sequence/>
  </xs:group>
  <xs:group name="xhtml.Ruby.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: element "ruby" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:sequence/>
  </xs:group>

  <xs:group
    name="xhtml.Inline.class">
    <xs:choice>
      <xs:group
        ref="xhtml.InlStruct.class"/>
      <xs:group
        ref="xhtml.InlPhras.class"/>
      <xs:group
        ref="xhtml.InlPres.class"/>
      <xs:group
        ref="xhtml.I18n.class"/>
      <xs:group
        ref="xhtml.Anchor.class"/>
      <xs:group
        ref="xhtml.InlSpecial.class"/>
      <xs:group
        ref="xhtml.InlForm.class"/>
      <xs:group
        ref="xhtml.Ruby.class"/>
      <xs:group
        ref="xhtml.Inline.extra"/>
    </xs:choice>
  </xs:group>
  <xs:group
    name="xhtml.InlinePre.mix">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: elements "tt", "i", "b", "script", "map" removed.
      </xs:documentation>
    </xs:annotation>      
    <xs:choice>
      <xs:group
        ref="xhtml.InlStruct.class"/>
      <xs:group
        ref="xhtml.InlPhras.class"/>
      <xs:group
        ref="xhtml.I18n.class"/>
      <xs:group
        ref="xhtml.Anchor.class"/>
      <xs:group
        ref="xhtml.Inline.extra"/>
    </xs:choice>
  </xs:group>

  <xs:group
    name="xhtml.Inline.mix">
    <xs:choice>
      <xs:group
        ref="xhtml.Inline.class"/>
      <xs:group
        ref="xhtml.Misc.class"/>
    </xs:choice>
  </xs:group>
  
  <xs:group
    name="xhtml.Heading.class">
    <xs:choice>
      <xs:element
        name="h1"
        type="xhtml.h1.type"/>
      <xs:element
        name="h2"
        type="xhtml.h2.type"/>
      <xs:element
        name="h3"
        type="xhtml.h3.type"/>
      <xs:element
        name="h4"
        type="xhtml.h4.type"/>
      <xs:element
        name="h5"
        type="xhtml.h5.type"/>
      <xs:element
        name="h6"
        type="xhtml.h6.type"/>
    </xs:choice>
  </xs:group>

  <xs:group
    name="xhtml.List.class">
    <xs:choice>
      <xs:element
        name="ul"
        type="xhtml.ul.type"/>
      <xs:element
        name="ol"
        type="xhtml.ol.type"/>
      <xs:element
        name="dl"
        type="xhtml.dl.type"/>
    </xs:choice>
  </xs:group>
  
  <xs:group
    name="xhtml.Table.class">
    <xs:choice>
      <xs:element
        name="table"
        type="xhtml.table.type"/>
    </xs:choice>
  </xs:group>
  
  <xs:group name="xhtml.Form.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: element "form" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:choice/>
  </xs:group>  

  <xs:group name="xhtml.Fieldset.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: element "fieldset" removed.
       </xs:documentation>
    </xs:annotation>      
    <xs:choice/>
  </xs:group>  
    
  <xs:group
    name="xhtml.BlkStruct.class">
    <xs:choice>
      <xs:element
        name="p"
        type="xhtml.p.type"/>
      <xs:element
        name="div"
        type="xhtml.div.type"/>
    </xs:choice>
  </xs:group>

  <xs:group
    name="xhtml.BlkPhras.class">
    <xs:annotation>
      <xs:documentation>
        SLXHTML 1.2: element "address" removed.
      </xs:documentation>
    </xs:annotation>      
    <xs:choice>
      <xs:element
        name="pre"
        type="xhtml.pre.type"/>
      <xs:element
        name="blockquote"
        type="xhtml.blockquote.type"/>
    </xs:choice>
  </xs:group>
  <xs:group
    name="xhtml.BlkPres.class">
    <xs:sequence>
      <xs:element
        name="hr"
        type="xhtml.hr.type"/>
    </xs:sequence>
  </xs:group>

  <xs:group
    name="xhtml.BlkSpecial.class">
    <xs:choice>
      <xs:group
        ref="xhtml.Table.class"/>
      <xs:group
      ref="xhtml.Form.class"/>
      <xs:group
        ref="xhtml.Fieldset.class"/>
    </xs:choice>
  </xs:group>

  <xs:group
    name="xhtml.Block.extra">
    <xs:sequence/>
  </xs:group>

  <xs:group
    name="xhtml.Block.class">
    <xs:choice>
      <xs:group
        ref="xhtml.BlkStruct.class"/>
      <xs:group
        ref="xhtml.BlkPhras.class"/>
      <xs:group
        ref="xhtml.BlkPres.class"/>
      <xs:group
        ref="xhtml.BlkSpecial.class"/>
      <xs:group
        ref="xhtml.Block.extra"/>
    </xs:choice>
  </xs:group>

  <xs:group
    name="xhtml.Block.mix">
    <xs:choice>
      <xs:group
        ref="xhtml.Heading.class"/>
      <xs:group
        ref="xhtml.List.class"/>
      <xs:group
        ref="xhtml.Block.class"/>
      <xs:group
        ref="xhtml.Misc.class"/>
    </xs:choice>
  </xs:group>

  <xs:group
    name="xhtml.Flow.mix">
    <xs:choice>
      <xs:group
        ref="xhtml.Heading.class"/>
      <xs:group
        ref="xhtml.List.class"/>
      <xs:group
        ref="xhtml.Block.class"/>
      <xs:group
        ref="xhtml.Inline.class"/>
      <xs:group
        ref="xhtml.Misc.class"/>
    </xs:choice>
  </xs:group>

  <xs:element
    name="html"
    type="xhtml.html.type"/>
</xs:schema>