<?xml version="1.0" encoding="UTF-8"?>
<!-- ============================================================= -->
<!--                    HEADER                                     -->
<!-- ============================================================= -->
<!--  MODULE:    DITA Concept XSD Module                           -->
<!--  VERSION:   1.1                                             -->
<!--  DATE:      November 2006                                     -->
<!--                                                               -->
<!-- ============================================================= -->


<!-- ============================================================= -->
<!-- SYSTEM:     Darwin Information Typing Architecture (DITA)     -->
<!--                                                               -->
<!-- PURPOSE:    W3C XML Schema to describe DITA concepts          -->
<!--                                                               -->
<!-- ORIGINAL CREATION DATE:                                       -->
<!--             March 2001                                        -->
<!--                                                               -->
<!--             (C) Copyright OASIS-Open.org 2005, 2006                -->
<!--             (C) Copyright IBM Corporation 2001, 2004.         -->
<!--             All Rights Reserved.                              -->
<!-- ============================================================= -->

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/">
  <!-- ==================== Import Section ======================= -->
   <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="urn:oasis:names:tc:dita:xsd:xml.xsd:1.1"/>
   <xs:import namespace="http://dita.oasis-open.org/architecture/2005/" schemaLocation="urn:oasis:names:tc:dita:xsd:ditaarch.xsd:1.1"/>

  <!--Embed concept to get specific elements -->
  <xs:element name="concept">
    <xs:annotation>
      <xs:documentation>
        The &lt;<keyword>concept</keyword>&gt; element is the top-level
        element for a topic that answers the question <q>what is?</q> Concepts provide
        background information that users must know before they can successfully work
        with a product or interface. Often, a concept is an extended definition of
        a major abstraction such as a process or function. It might also have an example
        or a graphic, but generally the structure of a concept is fairly simple.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="concept.class">
          <xs:attribute ref="class" default="- topic/topic concept/concept "/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
   
  <xs:element name="conbody">
    <xs:annotation>
      <xs:documentation>
        The &lt;<keyword>conbody</keyword>&gt; element is the main body-level
        element for a concept. Like the body element of a general topic, &lt;<keyword>conbody</keyword>&gt;
        allows paragraphs, lists, and other elements as well as sections and examples.
        But &lt;<keyword>conbody</keyword>&gt; has a constraint that a section
        or an example can be followed only by other sections or examples.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="conbody.class">
          <xs:attribute ref="class" default="- topic/body concept/conbody "/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:group name="concept-info-types">
    <xs:choice>
      <xs:group ref="concept"/>
      <xs:group ref="info-types" />
    </xs:choice>
  </xs:group>

  <!-- Base type: topic.class -->
  <xs:complexType name="concept.class">
        <xs:sequence>
          <xs:group ref="title"/>
          <xs:group ref="titlealts" minOccurs="0"/>
          <xs:choice minOccurs="0">
            <xs:group ref="shortdesc" />
            <xs:group ref="abstract" />
          </xs:choice>
          <xs:group ref="prolog" minOccurs="0"/>
          <xs:group ref="conbody" minOccurs="0"/>
          <xs:group ref="related-links" minOccurs="0"/>
          <xs:group ref="concept-info-types" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
         <xs:attribute name="id" type="xs:ID" use="required"/>
        <xs:attribute name="conref" type="xs:string"/>
        <xs:attributeGroup ref="select-atts"/>
        <xs:attribute ref="ditaarch:DITAArchVersion" />
        <xs:attribute name="outputclass" type="xs:string"/>
        <xs:attributeGroup ref="localization-atts"/>
        <xs:attributeGroup ref="global-atts"/>
  </xs:complexType>

  <!-- Base type: body.class -->
  <xs:complexType name="conbody.class">
        <xs:sequence>
          <xs:group ref="body.cnt" minOccurs="0" maxOccurs="unbounded"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="section"/>
            <xs:group ref="example"/>
          </xs:choice>
        </xs:sequence>
        <xs:attribute name="outputclass" type="xs:string"/>
        <xs:attribute name="base" type="xs:string" />
        <xs:attributeGroup ref="base-attribute-extensions"/>
        <xs:attributeGroup ref="id-atts"/>
    <xs:attributeGroup ref="localization-atts"/>
        <xs:attributeGroup ref="global-atts"/>
  </xs:complexType>
</xs:schema>
