<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns="http://www.arkivverket.no/standarder/addml"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://www.arkivverket.no/standarder/addml" elementFormDefault="qualified" version="8.2">
  <xs:element name="addml">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="dataset" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dataset">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="reference"/>
        <xs:sequence>
          <xs:element ref="flatFiles" minOccurs="0"/>
          <xs:element ref="dataObjects" minOccurs="0"/>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="reference">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="context" minOccurs="0"/>
        <xs:element ref="content" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="context">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="additionalElements" minOccurs="0"/>
        <xs:element ref="processes" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="content">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="additionalElements" minOccurs="0"/>
        <xs:element ref="processes" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="flatFiles">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="flatFile" maxOccurs="unbounded"/>
        <xs:element ref="flatFileDefinitions"/>
        <xs:element ref="structureTypes"/>
        <xs:element ref="queries" minOccurs="0"/>
        <xs:element ref="processes" minOccurs="0"/>
        <xs:element ref="flatFileProcesses" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="flatFile">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="properties" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="definitionReference" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="flatFileDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="flatFileDefinition" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="flatFileDefinition">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="properties" minOccurs="0"/>
        <xs:element ref="external" minOccurs="0"/>
        <xs:element ref="recordDefinitionFieldIdentifier" minOccurs="0"/>
        <xs:element ref="recordDefinitions"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="typeReference" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="external">
    <xs:complexType/>
  </xs:element>
  <xs:element name="recordDefinitionFieldIdentifier" type="xs:string"/>
  <xs:element name="recordDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="recordDefinition" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="recordDefinition">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="properties" minOccurs="0"/>
        <xs:element ref="recordDefinitionFieldValue" minOccurs="0"/>
        <xs:element ref="incomplete" minOccurs="0"/>
        <xs:element ref="fixedLength" minOccurs="0"/>
        <xs:element ref="repeatingGroups" minOccurs="0"/>
        <xs:element ref="keys" minOccurs="0"/>
        <xs:element ref="fieldDefinitions"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="typeReference" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="recordDefinitionFieldValue" type="xs:string"/>
  <xs:element name="incomplete">
    <xs:complexType/>
  </xs:element>
  <xs:element name="fixedLength" type="xs:nonNegativeInteger"/>
  <xs:element name="repeatingGroups">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="repeatingGroup" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="repeatingGroup">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0">
          <xs:element ref="repeatingGroupOccurrenceField"/>
          <xs:element ref="fixedOccurrences"/>
        </xs:choice>
        <xs:element ref="fieldDefinitionReferences"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="repeatingGroupOccurrenceField">
    <xs:complexType>
      <xs:attribute name="definitionReference" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="fixedOccurrences" type="xs:nonNegativeInteger"/>
  <xs:element name="keys">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="key" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="key">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:element ref="primaryKey"/>
          <xs:element ref="alternateKey"/>
          <xs:element ref="foreignKey"/>
        </xs:choice>
        <xs:element ref="fieldDefinitionReferences"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="primaryKey">
    <xs:complexType/>
  </xs:element>
  <xs:element name="alternateKey">
    <xs:complexType/>
  </xs:element>
  <xs:element name="foreignKey">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="flatFileDefinitionReference"/>
        <xs:element ref="relationType"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="relationType" type="xs:string"/>
  <xs:element name="fieldDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="fieldDefinition" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="fieldDefinition">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="properties" minOccurs="0"/>
        <xs:element ref="startPos" minOccurs="0"/>
        <xs:element ref="endPos" minOccurs="0"/>
        <xs:element ref="fixedLength" minOccurs="0"/>
        <xs:element ref="minLength" minOccurs="0"/>
        <xs:element ref="maxLength" minOccurs="0"/>
        <xs:element ref="unique" minOccurs="0"/>
        <xs:element ref="notNull" minOccurs="0"/>
        <xs:element ref="fieldParts" minOccurs="0"/>
        <xs:element ref="codes" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="typeReference" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="startPos" type="xs:nonNegativeInteger"/>
  <xs:element name="endPos" type="xs:nonNegativeInteger"/>
  <xs:element name="minLength" type="xs:nonNegativeInteger"/>
  <xs:element name="maxLength" type="xs:nonNegativeInteger"/>
  <xs:element name="unique">
    <xs:complexType/>
  </xs:element>
  <xs:element name="notNull">
    <xs:complexType/>
  </xs:element>
  <xs:element name="fieldParts">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="fieldDefinition" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="codes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="code" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="code">
    <xs:complexType>
      <xs:attribute name="codeValue" type="xs:string" use="required"/>
      <xs:attribute name="explan" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="structureTypes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="flatFileTypes"/>
        <xs:element ref="recordTypes" minOccurs="0"/>
        <xs:element ref="fieldTypes"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="flatFileTypes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="flatFileType" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="flatFileType">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="charset"/>
        <xs:element ref="charDefinitions" minOccurs="0"/>
        <xs:choice>
          <xs:element ref="fixedFileFormat"/>
          <xs:element ref="delimFileFormat"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="charset" type="xs:string"/>
  <xs:element name="charDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="charDefinition" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="charDefinition">
    <xs:complexType>
      <xs:attribute name="fromChar" type="xs:string" use="required"/>
      <xs:attribute name="toChar" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="fixedFileFormat">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="recordSeparator" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="delimFileFormat">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="recordSeparator"/>
        <xs:element ref="fieldSeparatingChar"/>
        <xs:element ref="quotingChar" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="fieldSeparatingChar" type="xs:string"/>
  <xs:element name="quotingChar" type="xs:string"/>
  <xs:element name="recordTypes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="recordType" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="recordType">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="trimmed" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="trimmed">
    <xs:complexType/>
  </xs:element>
  <xs:element name="fieldTypes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="fieldType" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="fieldType">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="dataType"/>
        <xs:element ref="fieldFormat" minOccurs="0"/>
        <xs:element ref="alignment" minOccurs="0"/>
        <xs:element ref="padChar" minOccurs="0"/>
        <xs:element ref="packType" minOccurs="0"/>
        <xs:element ref="nullValues" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dataType" type="xs:string"/>
  <xs:element name="fieldFormat" type="xs:string"/>
  <xs:element name="alignment" type="xs:string"/>
  <xs:element name="padChar" type="xs:string"/>
  <xs:element name="packType" type="xs:string"/>
  <xs:element name="nullValues">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="nullValue" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="nullValue" type="xs:string"/>
  <xs:element name="queries">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="query" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="query">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="statement"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="statement" type="xs:string"/>
  <xs:element name="flatFileProcesses">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="processes" minOccurs="0"/>
        <xs:element ref="recordProcesses" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="flatFileReference" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="recordProcesses">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="processes" minOccurs="0"/>
        <xs:element ref="fieldProcesses" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="definitionReference" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="fieldProcesses">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="processes"/>
      </xs:sequence>
      <xs:attribute name="definitionReference" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="processes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="process" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="process">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="parameters" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="parameters">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="parameter" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="parameter">
    <xs:complexType>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="flatFileDefinitionReference">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="recordDefinitionReferences" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="recordDefinitionReferences">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="recordDefinitionReference" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="recordDefinitionReference">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="fieldDefinitionReferences" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="fieldDefinitionReferences">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="fieldDefinitionReference" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="fieldDefinitionReference">
    <xs:complexType>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dataObjects">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="dataObject" maxOccurs="unbounded"/>
        <xs:element ref="processes" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="dataObject">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="properties" minOccurs="0"/>
        <xs:element ref="dataObjects" minOccurs="0"/>
        <xs:element ref="processes" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="additionalElements">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="additionalElement" maxOccurs="unbounded"/>
        <xs:element ref="processes" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="additionalElement">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="value" minOccurs="0"/>
        <xs:element ref="properties" minOccurs="0"/>
        <xs:element ref="additionalElements" minOccurs="0"/>
        <xs:element ref="processes" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="dataType" type="xs:string"/>
      <xs:attribute name="format" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="description" type="xs:string"/>
  <xs:element name="properties">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="property" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="property">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="value" minOccurs="0"/>
        <xs:element ref="properties" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="dataType" type="xs:string"/>
      <xs:attribute name="format" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="recordSeparator" type="xs:string"/>
  <xs:element name="value" type="xs:string"/>
</xs:schema>
