<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <!--
    project.rnc
      relaxng schema for CodeSonar's XML output
      generated via template project.xml
  -->
  <!--
    relaxng schema for CodeSonar's XML output
    std_grid_entry is the standard structure for a grid entry
  -->
  <xs:attributeGroup name="std_grid_entry">
    <xs:attribute name="url"/>
  </xs:attributeGroup>
  <xs:element name="s">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="c"/>
      </xs:sequence>
      <xs:attribute name="comment" type="xs:boolean"/>
      <xs:attribute name="grayout" type="xs:boolean"/>
      <xs:attribute name="unreachable" type="xs:boolean"/>
      <xs:attribute name="keyword" type="xs:boolean"/>
      <xs:attribute name="string" type="xs:boolean"/>
      <xs:attribute name="macro" type="xs:boolean"/>
      <xs:attribute name="preprocessor" type="xs:boolean"/>
      <xs:attribute name="taint"/>
      <xs:attribute name="linksfid"/>
      <xs:attribute name="interesting" type="xs:boolean"/>
      <xs:attribute name="opcode" type="xs:boolean"/>
      <xs:attribute name="label" type="xs:boolean"/>
      <xs:attribute name="linklocal" type="xs:boolean"/>
      <xs:attribute name="loop" type="xs:boolean"/>
      <xs:attribute name="mclose" type="xs:boolean"/>
      <xs:attribute name="on_path" type="xs:boolean"/>
      <xs:attribute name="super_interesting" type="xs:boolean"/>
      <xs:attribute name="refs"/>
      <xs:attribute name="linkline" type="xs:integer"/>
      <xs:attribute name="include" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="c" type="xs:string"/>
  <xs:element name="vtx_info">
    <xs:complexType>
      <xs:attribute name="loc" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="code_grid_entry">
    <xs:sequence>
      <xs:element minOccurs="0" ref="vtx_info"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="s"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="permissions_link">
    <xs:complexType>
      <xs:attribute name="url" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="project">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description"/>
        <xs:group ref="anlgridGridRef"/>
      </xs:sequence>
      <xs:attribute name="name" use="required"/>
      <xs:attribute name="last_analysis"/>
      <xs:attribute name="created" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="description" type="xs:string"/>
  <xs:group name="anlgridGridRef">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="analysis"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="analysis">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="project_id"/>
        <xs:element name="project">
          <xs:complexType mixed="true">
            <xs:attributeGroup ref="std_grid_entry"/>
          </xs:complexType>
        </xs:element>
        <xs:element ref="project_description"/>
        <xs:element ref="analysis_id"/>
        <xs:element name="analysis">
          <xs:complexType mixed="true">
            <xs:attributeGroup ref="std_grid_entry"/>
          </xs:complexType>
        </xs:element>
        <xs:element ref="analysis_description"/>
        <xs:element ref="parent_analysis_id"/>
        <xs:element ref="state"/>
        <xs:element ref="started"/>
        <xs:element ref="finished"/>
        <xs:element ref="linking_started"/>
        <xs:element ref="username"/>
        <xs:element ref="hub_user"/>
        <xs:element ref="address"/>
        <xs:element ref="install"/>
        <xs:element ref="warning_count"/>
        <xs:element ref="file_count"/>
        <xs:element ref="most_recent"/>
        <xs:element ref="dry_run"/>
        <xs:element ref="logs_present"/>
        <xs:element ref="build_machine"/>
        <xs:element ref="analysis_machine"/>
        <xs:element ref="_prj_files_size"/>
        <xs:element ref="_prj_files_exists"/>
        <xs:element ref="_prj_files_location"/>
        <xs:element ref="protected_from_auto_deletion"/>
        <xs:element ref="permissions_link"/>
        <xs:element ref="metric"/>
        <xs:element ref="property"/>
      </xs:choice>
      <xs:attribute name="url" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="project_id">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="project_description">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="analysis_id">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="analysis_description">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="parent_analysis_id">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="state">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="started">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="finished">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="linking_started">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="username">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="hub_user">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="address">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="install">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="warning_count">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="file_count">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="most_recent">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dry_run">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="logs_present">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="build_machine">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="analysis_machine">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="_prj_files_size">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="_prj_files_exists">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="_prj_files_location">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="protected_from_auto_deletion">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="std_grid_entry"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="metric">
    <xs:complexType mixed="true">
      <xs:attribute name="name" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="property">
    <xs:complexType mixed="true">
      <xs:attribute name="name" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
