Version 1 (modified by dtea, 6 years ago)

--

observer-response.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	elementFormDefault="qualified" 
	targetNamespace="http://www.w3.org/unicorn/observationresponse"
	xmlns:m="http://www.w3.org/unicorn/observationresponse">
	<xs:import
		namespace="http://www.w3.org/XML/1998/namespace"
        schemaLocation="http://www.w3.org/2001/xml.xsd"/>
    <xs:element name="observationresponse">
        <xs:complexType>
            <xs:sequence>
                <!-- URI of the document checked-->
                <xs:element ref="m:uri"/>
                <!-- URI of the observer -->
                <xs:element ref="m:checkedby"  minOccurs="0"/>
                <!-- "Version" of the document. For example CSS 2, XHTML 1.0 Strict, ... -->
                <xs:element ref="m:version" minOccurs="0"/>
                <!-- Observation date-->
                <xs:element ref="m:date"  minOccurs="0"/>
                <!-- used for conformance checks -->
                <xs:element ref="m:passed" minOccurs="0"/>
                <!-- Result of the observation -->
                <xs:element ref="m:result"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="uri" type="xs:anyURI"/>
    <xs:element name="checkedby" type="xs:anyURI"/>
    <xs:element name="version" type="xs:string"/>
    <xs:element name="date" type="xs:dateTime"/>
    <xs:element name="passed" type="xs:boolean"/>
    
    <!-- there are three types of messages: errors, warnings and misceallenous-->
    <xs:element name="result">
        <xs:complexType>
            <xs:sequence>
                <!-- global error list-->
                <xs:element ref="m:errors"  minOccurs="0"/>
                <!-- global warning list -->
                <xs:element ref="m:warnings"  minOccurs="0"/>
                <!-- global message list -->
                <xs:element ref="m:informations"  minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="errors">
        <xs:complexType>
            <xs:sequence>
                <!-- Total number of errors -->
                <xs:element ref="m:errorcount" minOccurs="0"/>
                <xs:element ref="m:errorlist" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute ref="xml:lang" use="required"/>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="errorcount" type="xs:integer"/>
    
    <xs:element name="errorlist">
        <xs:complexType>
            <xs:sequence>
                <!-- URI of an included and checked document -->
                <xs:element ref="m:uri"/>
                <!-- number of errors for this "sub" document -->
                <xs:element ref="m:errorcount" minOccurs="0"/>
                <!-- error list for this document -->
                <xs:element ref="m:error" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="error">
        <xs:complexType>
            <xs:sequence>
                <!-- Line where the error appeared-->
                <xs:element ref="m:line" minOccurs="0"/>
                <!-- Column where the error appeared -->
                <xs:element ref="m:column" minOccurs="0"/>
                <xs:element ref="m:errortype" minOccurs="0"/>
                <xs:element ref="m:context" minOccurs="0"/>
                <xs:element ref="m:message" maxOccurs="unbounded"/>
                <xs:element ref="m:longmessage" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="line" type="xs:nonNegativeInteger"/>        
    <xs:element name="column" type="xs:nonNegativeInteger"/>
    <xs:element name="errortype" type="xs:string"/>
    <xs:element name="context" type="xs:string"/>
    <xs:element name="message" type="xs:string"/>
    
    <xs:element name="longmessage">
      <xs:complexType mixed="true">
	<xs:sequence minOccurs="0" maxOccurs="unbounded">
	  <xs:element ref="m:a"/>
	  <xs:element ref="m:code" />
	  <xs:element ref="m:img"/>
	</xs:sequence>
      </xs:complexType>
    </xs:element>

    <xs:complexType name="Inline" mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
	<xs:element ref="m:a"/>
	<xs:element ref="m:img"/>
      </xs:choice>
    </xs:complexType>
    
    <xs:complexType name="inA" mixed="true">
      <xs:choice>
	<xs:element ref="m:img"/>
      </xs:choice>
    </xs:complexType>

    <xs:element name="a">
      <xs:complexType mixed="true">
	<xs:complexContent>
	  <xs:extension base="m:inA">
	    <xs:attribute name="href" type="xs:anyURI"/>
	  </xs:extension>
	</xs:complexContent>
      </xs:complexType>
    </xs:element>

    <xs:element name="code">
      <xs:complexType mixed="true">
	<xs:complexContent>
	  <xs:extension base="m:Inline">
	  </xs:extension>
	</xs:complexContent>
      </xs:complexType>
    </xs:element>

    <xs:element name="img">
      <xs:complexType>
	<xs:attribute name="src" use="required" type="xs:anyURI"/>
	<xs:attribute name="alt" use="required" type="xs:string"/>
	<xs:attribute name="name" type="xs:NMTOKEN"/>
	<xs:attribute name="longdesc" type="xs:anyURI"/>
	<xs:attribute name="height" type="xs:nonNegativeInteger"/>
	<xs:attribute name="width" type="xs:nonNegativeInteger"/>
      </xs:complexType>
    </xs:element>
 <!--   
    <xs:complexType name="tCode" mixed="true">
      <xs:complexContent>
	<xs:extension base="m:Inline">
	</xs:extension>
      </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="tA" mixed="true">
      <xs:complexContent>
	<xs:extension base="m:inA">
	  <xs:attribute name="href" type="xs:anyURI"/>
	</xs:extension>
      </xs:complexContent>
    </xs:complexType>
    
    <xs:complexType name="tImg">
      <xs:attribute name="src" use="required" type="xs:anyURI"/>
      <xs:attribute name="alt" use="required" type="xs:string"/>
      <xs:attribute name="name" type="xs:NMTOKEN"/>
      <xs:attribute name="longdesc" type="xs:anyURI"/>
      <xs:attribute name="height" type="xs:nonNegativeInteger"/>
      <xs:attribute name="width" type="xs:nonNegativeInteger"/>
    </xs:complexType>
-->
    <xs:element name="warnings">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="m:warningcount" minOccurs="0"/>
                <xs:element ref="m:warninglist" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute ref="xml:lang" use="required"/>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="warningcount" type="xs:integer"/>
    
    <xs:element name="warninglist">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="m:uri"/>
                <xs:element ref="m:warningcount" minOccurs="0"/>
                <xs:element ref="m:warning" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="warning">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="m:line" minOccurs="0"/>
                <xs:element ref="m:column" minOccurs="0"/>
                <xs:element ref="m:context" minOccurs="0"/>
                <xs:element ref="m:level" minOccurs="0"/>
                <xs:element ref="m:message" maxOccurs="unbounded"/>
                <xs:element ref="m:longmessage" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="level" type="m:tWarningLevels"/>

    <xs:simpleType name="tWarningLevels">
          <xs:restriction base="xs:nonNegativeInteger">
              <xs:maxInclusive value="3"/>
          </xs:restriction>
    </xs:simpleType>

    <xs:element name="informations">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="m:infocount" minOccurs="0"/>
                <xs:element ref="m:infolist" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute ref="xml:lang" use="required"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="infocount" type="xs:integer"/>

    <xs:element name="infolist">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="m:uri"/>
                <xs:element ref="m:infocount" minOccurs="0"/>
                <xs:element ref="m:info" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="info">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="m:line" minOccurs="0"/>
                <xs:element ref="m:column" minOccurs="0"/>
				<xs:element ref="m:context" minOccurs="0"/>
                <xs:element ref="m:message" maxOccurs="unbounded"/>
                <xs:element ref="m:longmessage" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--<xs:element name="errordetail" type="xs:string"/>-->

</xs:schema>