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>