Harvest Policy Schema

The XML schema file for validating policy files follows:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
   jxb:version="2.0">

   <xsd:element name="path" type="xsd:string"/>
   <xsd:element name="file" type="xsd:string"/>
   <xsd:element name="baseUrl" type="xsd:string"/>
   <xsd:element name="offset" type="xsd:string"/>
   <xsd:element name="serverUrl" type="xsd:string"/>
   <xsd:element name="dataTransferType" type="xsd:string"/>
   <xsd:element name="modelValue" type="xsd:string"/>
   <xsd:element name="name" type="xsd:string"/>
   <xsd:element name="description" type="xsd:string"/>
   <xsd:element name="value" type="xsd:string"/>
   <xsd:element name="manifest" type="xsd:string"/>
   <xsd:element name="include" type="xsd:string"/>
   <xsd:element name="exclude" type="xsd:string"/>

   <xsd:attribute name="objectType" type="xsd:string"/>
   <xsd:attribute name="prefix" type="xsd:string"/>
   <xsd:attribute name="uri" type="xsd:string"/>
   <xsd:attribute name="default" type="xsd:boolean" default="false"/>
   <xsd:attribute name="registerFileUrls" type="xsd:boolean" default="false"/>
   <xsd:attribute name="appendFilename" type="xsd:boolean" default="false"/>
   <xsd:attribute name="slotName" type="xsd:string"/>
   <xsd:attribute name="slotType" type="xsd:string"/>
   <xsd:attribute name="value" type="xsd:string"/>
   <xsd:attribute name="name" type="xsd:string"/>
   <xsd:attribute name="generate" type="xsd:boolean" default="false"/>

   <xsd:element name="fileFilter" type="FileFilter"/>
   <xsd:complexType name="FileFilter">
      <xsd:sequence>
         <xsd:element ref="include" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="directoryFilter" type="DirectoryFilter"/>
   <xsd:complexType name="DirectoryFilter">
      <xsd:sequence>
         <xsd:element ref="exclude" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="elementName" type="ElementName"/>
   <xsd:complexType name="ElementName">
      <xsd:simpleContent>
         <xsd:extension base="xsd:string">
            <xsd:attribute ref="slotName"/>
            <xsd:attribute ref="slotType"/>            
         </xsd:extension>
      </xsd:simpleContent>
   </xsd:complexType>

   <xsd:element name="slot" type="Slot"/>
   <xsd:complexType name="Slot">
      <xsd:sequence>
         <xsd:element ref="value" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute ref="name" use="required"/>
   </xsd:complexType>

   <xsd:element name="staticMetadata" type="StaticMetadata"/>
   <xsd:complexType name="StaticMetadata">
      <xsd:sequence>
         <xsd:element ref="slot" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="registryPackage" type="RegistryPackage"/>
   <xsd:complexType name="RegistryPackage">
      <xsd:sequence>
         <xsd:element ref="name"/>
         <xsd:element ref="description"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="xPath" type="XPath"/>
   <xsd:complexType name="XPath">
      <xsd:simpleContent>
         <xsd:extension base="xsd:string">
            <xsd:attribute ref="slotName"/>
         </xsd:extension>
      </xsd:simpleContent>
   </xsd:complexType>

   <xsd:element name="directories" type="Directory"/>
   <xsd:complexType name="Directory">
      <xsd:sequence>
         <xsd:element ref="path" maxOccurs="unbounded"/>
         <xsd:element ref="fileFilter" minOccurs="0" />
         <xsd:element ref="directoryFilter" minOccurs="0" />
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="collections" type="Collection"/>
   <xsd:complexType name="Collection">
      <xsd:sequence>
         <xsd:element ref="file" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="namespace" type="Namespace"/>
   <xsd:complexType name="Namespace">
      <xsd:attribute ref="prefix" use="required"/>
      <xsd:attribute ref="uri" use="required"/>
      <xsd:attribute ref="default"/>
   </xsd:complexType>

   <xsd:element name="productMetadata" type="Pds4ProductMetadata"/>
   <xsd:complexType name="Pds4ProductMetadata">
      <xsd:sequence>
         <xsd:element ref="xPath" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute ref="objectType" use="required"/>
   </xsd:complexType>

   <xsd:element name="lidContents" type="LidContents"/>
   <xsd:complexType name="LidContents">
      <xsd:sequence>
         <xsd:element ref="elementName" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute ref="prefix" use="required"/>
      <xsd:attribute ref="appendFilename"/>
   </xsd:complexType>

   <xsd:element name="pds3ProductMetadata" type="Pds3ProductMetadata"/>
   <xsd:complexType name="Pds3ProductMetadata">
      <xsd:all>
         <xsd:element ref="lidContents"/>
         <xsd:element ref="staticMetadata" minOccurs="0"/>
         <xsd:element ref="ancillaryMetadata" minOccurs="0"/>
         <xsd:element ref="includePaths" minOccurs="0"/>
      </xsd:all>
   </xsd:complexType>

   <xsd:element name="includePaths" type="IncludePath"/>
   <xsd:complexType name="IncludePath">
      <xsd:sequence>
         <xsd:element ref="path" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="candidates" type="Candidate"/>
   <xsd:complexType name="Candidate">
      <xsd:sequence>
         <xsd:element ref="pds3ProductMetadata" minOccurs="0"/>
         <xsd:element ref="namespace" minOccurs="0" maxOccurs="unbounded"/>
         <xsd:element ref="productMetadata" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="referenceTypeMap" type="ReferenceTypeMap"/>
   <xsd:complexType name="ReferenceTypeMap">
      <xsd:sequence>
         <xsd:element ref="modelValue" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute ref="value" use="required"/>
   </xsd:complexType>

   <xsd:element name="references" type="References"/>
   <xsd:complexType name="References">
      <xsd:sequence>
         <xsd:element ref="referenceTypeMap" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

<xsd:element name="fileTypeMap" type="FileTypeMap"/>
<xsd:complexType name="FileTypeMap">
   <xsd:sequence>
      <xsd:element ref="modelValue" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute ref="value" use="required"/>
</xsd:complexType>

<xsd:element name="fileTypes" type="FileTypes"/>
<xsd:complexType name="FileTypes">
   <xsd:sequence>
      <xsd:element ref="fileTypeMap" maxOccurs="unbounded"/>
   </xsd:sequence>
</xsd:complexType>

   <xsd:element name="ancillaryMetadata" type="AncillaryMetadata"/>
   <xsd:complexType name="AncillaryMetadata">
      <xsd:sequence>
         <xsd:element ref="elementName" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="pds3Directory" type="Pds3Directory"/>
   <xsd:complexType name="Pds3Directory">
      <xsd:sequence>
         <xsd:element ref="path"/>
         <xsd:element ref="fileFilter" minOccurs="0" />
         <xsd:element ref="directoryFilter" minOccurs="0" />
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="storageIngestion" type="StorageIngestion"/>
   <xsd:complexType name="StorageIngestion">
      <xsd:sequence>
         <xsd:element ref="serverUrl"/>
         <xsd:element ref="dataTransferType" minOccurs="0"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="accessUrls" type="AccessUrls"/>
   <xsd:complexType name="AccessUrls">
      <xsd:sequence>
         <xsd:element ref="accessUrl" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute ref="registerFileUrls"/>
   </xsd:complexType>

   <xsd:element name="accessUrl" type="AccessUrl"/>
   <xsd:complexType name="AccessUrl">
      <xsd:sequence>
         <xsd:element ref="baseUrl"/>
         <xsd:element ref="offset" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:complexType>

   <xsd:element name="checksums" type="Checksums"/>
   <xsd:complexType name="Checksums">
      <xsd:sequence>
         <xsd:element ref="manifest" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute ref="generate"/>
   </xsd:complexType>

   <xsd:element name="policy">
      <xsd:complexType>
         <xsd:all>
            <xsd:element ref="registryPackage" minOccurs="0"/>
            <xsd:element ref="collections" minOccurs="0"/>
            <xsd:element ref="directories" minOccurs="0"/>
            <xsd:element ref="pds3Directory" minOccurs="0"/>
            <xsd:element ref="storageIngestion" minOccurs="0"/>
            <xsd:element ref="accessUrls" minOccurs="0"/>
            <xsd:element ref="checksums" minOccurs="0"/>
            <xsd:element ref="candidates"/>
            <xsd:element ref="references" minOccurs="0"/>
            <xsd:element ref="fileTypes" minOccurs="0"/>
         </xsd:all>
      </xsd:complexType>
   </xsd:element>
</xsd:schema>