<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
  <xs:simpleType name="codeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{1,3}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="parentDigitsType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{1,2}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="emptyStringType">
    <xs:restriction base="xs:string">
      <xs:length value="0" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="parentCodeType">
    <xs:union memberTypes="emptyStringType parentDigitsType" />
  </xs:simpleType>
  <xs:simpleType name="classCodeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="levelType">
    <xs:restriction base="xs:positiveInteger">
      <xs:enumeration value="1" />
      <xs:enumeration value="2" />
      <xs:enumeration value="3" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="nodeTypeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="class" />
      <xs:enumeration value="group" />
      <xs:enumeration value="account" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="availabilityStatusType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="assigned" />
      <xs:enumeration value="available" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="sourceSectionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="annex_1" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="validationStatusType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="extracted" />
      <xs:enumeration value="reviewed" />
      <xs:enumeration value="validated" />
      <xs:enumeration value="needs_correction" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="pcg_2005_mg">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="node" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="code" type="codeType" />
              <xs:element name="label_official" type="xs:string" />
              <xs:element name="label_normalized" type="xs:string" />
              <xs:element name="parent_code" type="parentCodeType" />
              <xs:element name="class_code" type="classCodeType" />
              <xs:element name="level" type="levelType" />
              <xs:element name="node_type" type="nodeTypeType" />
              <xs:element name="availability_status" type="availabilityStatusType" />
              <xs:element name="source_printed_page" type="xs:positiveInteger" />
              <xs:element name="source_printed_page_end" type="xs:positiveInteger" />
              <xs:element name="source_pdf_page" type="xs:positiveInteger" />
              <xs:element name="source_pdf_page_end" type="xs:positiveInteger" />
              <xs:element name="source_section" type="sourceSectionType" />
              <xs:element name="source_order" type="xs:positiveInteger" />
              <xs:element name="validation_status" type="validationStatusType" />
              <xs:element name="notes" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
