<?xml version="1.0" encoding="UTF-8"?>
<!-- section 9.1 -->
<schema targetNamespace="urn:ietf:params:xml:ns:rdeCsv-1.0"
xmlns:rdeCsv="urn:ietf:params:xml:ns:rdeCsv-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!--
Import common element types
-->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/> namespace="urn:ietf:params:xml:ns:eppcom-1.0" />
<import namespace="urn:ietf:params:xml:ns:rde-1.0"/> namespace="urn:ietf:params:xml:ns:rde-1.0" />
<annotation>
<documentation>
Registry Data Escrow Comma-Separated Values (CSV)
</documentation>
</annotation>
<!-- csv content element -->
<element name="csv" type="rdeCsv:csvType"/>
type="rdeCsv:csvType" />
<!-- Definition of CSV file -->
<complexType name="csvType">
<sequence>
<element name="fields" type="rdeCsv:fieldsType"/>
type="rdeCsv:fieldsType" />
<element name="files" type="rdeCsv:filesType"/>
type="rdeCsv:filesType" />
</sequence>
<attribute name="name"
type="token" use="required"/>
use="required" />
<attribute name="sep"
type="rdeCsv:sepType" default=","/>
default="," />
</complexType>
<!-- field seperator separator must be a single character -->
<simpleType name="sepType">
<restriction base="string">
<minLength value="1"/> value="1" />
<maxLength value="1"/> value="1" />
</restriction>
</simpleType>
<!-- Abstract field type -->
<element name="field"
type="rdeCsv:fieldType" abstract="true"/>
abstract="true" />
<complexType name="fieldType">
<sequence/>
<sequence />
</complexType>
<!-- fieldType with optional value (isRequired=false) -->
<complexType name="fieldOptionalType">
<complexContent>
<extension base="rdeCsv:fieldType">
<sequence/>
<sequence />
<attribute name="isRequired"
type="boolean" default="false"/>
default="false" />
<attribute name="parent"
type="boolean" default="false"/>
default="false" />
</extension>
</complexContent>
</complexType>
<!-- fieldType with required value (isRequired=false) -->
<complexType name="fieldRequiredType">
<complexContent>
<extension base="rdeCsv:fieldType">
<sequence/>
<sequence />
<attribute name="isRequired"
type="boolean" default="true"/>
default="true" />
<attribute name="parent"
type="boolean" default="false"/>
default="false" />
</extension>
</complexContent>
</complexType>
<!-- Concrete field types -->
<!-- UTF-8 Name field (e.g. (e.g., domain name) -->
<element name="fUName"
type="rdeCsv:fNameType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fNameType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="eppcom\:labelType"/>
default="eppcom\:labelType" />
</extension>
</complexContent>
</complexType>
<complexType name="fNameRequiredType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="eppcom\:labelType"/>
default="eppcom\:labelType" />
</extension>
</complexContent>
</complexType>
<!-- Registry Object IDentifier (roid) field -->
<element name="fRoid"
type="rdeCsv:fRoidType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fRoidType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="eppcom\:roidType"/>
default="eppcom\:roidType" />
</extension>
</complexContent>
</complexType>
<!-- Registrant field -->
<element name="fRegistrant"
type="rdeCsv:fRegistrantType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fRegistrantType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="eppcom\:clIDType"/>
default="eppcom\:clIDType" />
</extension>
</complexContent>
</complexType>
<!-- Object Status Description -->
<element name="fStatusDescription"
type="rdeCsv:fNormalizedStringType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- clID fields (fClID, fCrID, fUpID) -->
<!-- Identifier of the client that sponsors the object -->
<element name="fClID"
type="rdeCsv:fClIDRequiredType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of registrar of client
that created the object -->
<element name="fCrRr"
type="rdeCsv:fClIDType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of the client that created the object -->
<element name="fCrID"
type="rdeCsv:fClIDType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of registrar of client that
updated the object -->
<element name="fUpRr"
type="rdeCsv:fClIDType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of the client that updated the object -->
<element name="fUpID"
type="rdeCsv:fClIDType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of registrar of client that
requested the transfer -->
<element name="fReRr"
type="rdeCsv:fClIDRequiredType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of the client that requested
the transfer -->
<element name="fReID"
type="rdeCsv:fClIDType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of registrar client that
should take or took action -->
<element name="fAcRr"
type="rdeCsv:fClIDRequiredType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Identifier of the client that should take or
took action -->
<element name="fAcID"
type="rdeCsv:fClIDType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fClIDType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="eppcom\:clIDType"/>
default="eppcom\:clIDType" />
</extension>
</complexContent>
</complexType>
<complexType name="fClIDRequiredType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="eppcom\:clIDType"/>
default="eppcom\:clIDType" />
</extension>
</complexContent>
</complexType>
<!-- dateTime fields (fCrDate, fUpDate, fExDate) -->
<element name="fCrDate"
type="rdeCsv:fDateTimeType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<element name="fUpDate"
type="rdeCsv:fDateTimeType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<element name="fExDate"
type="rdeCsv:fDateTimeType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Date and time that transfer was requested -->
<element name="fReDate"
type="rdeCsv:fRequiredDateTimeType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- Date and time of a required or completed response -->
<element name="fAcDate"
type="rdeCsv:fRequiredDateTimeType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<element name="fTrDate"
type="rdeCsv:fDateTimeType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fDateTimeType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="dateTime"/>
default="dateTime" />
</extension>
</complexContent>
</complexType>
<complexType name="fRequiredDateTimeType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="dateTime"/>
default="dateTime" />
</extension>
</complexContent>
</complexType>
<!-- boolean type -->
<complexType name="fBooleanType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="boolean"/>
default="boolean" />
</extension>
</complexContent>
</complexType>
<complexType name="fRequiredBooleanType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="boolean"/>
default="boolean" />
</extension>
</complexContent>
</complexType>
<!-- unsignedByte type -->
<complexType name="fUnsignedByteType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="unsignedByte"/>
default="unsignedByte" />
</extension>
</complexContent>
</complexType>
<complexType name="fRequiredUnsignedByteType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="unsignedByte"/>
default="unsignedByte" />
</extension>
</complexContent>
</complexType>
<!-- unsignedShort type -->
<complexType name="fUnsignedShortType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="unsignedShort"/>
default="unsignedShort" />
</extension>
</complexContent>
</complexType>
<complexType name="fRequiredUnsignedShortType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="unsignedShort"/>
default="unsignedShort" />
</extension>
</complexContent>
</complexType>
<!-- hexBinary type -->
<complexType name="fHexBinaryType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="hexBinary"/>
default="hexBinary" />
</extension>
</complexContent>
</complexType>
<complexType name="fRequiredHexBinaryType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="hexBinary"/>
default="hexBinary" />
</extension>
</complexContent>
</complexType>
<!-- language type -->
<element name="fLang"
type="rdeCsv:fLangType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fLangType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="language"/>
default="language" />
</extension>
</complexContent>
</complexType>
<!-- IDN Table Identifier -->
<element name="fIdnTableId"
type="rdeCsv:fTokenType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<!-- State of the most recent transfer request -->
<element name="fTrStatus"
type="rdeCsv:fTrStatusType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fTrStatusType">
<complexContent>
<extension base="rdeCsv:fieldRequiredType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="eppcom\:trStatusType"/>
default="eppcom\:trStatusType" />
</extension>
</complexContent>
</complexType>
<!-- General token type -->
<complexType name="fTokenType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="token"/>
default="token" />
</extension>
</complexContent>
</complexType>
<!-- General normalizedString type -->
<complexType name="fNormalizedStringType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="normalizedString"/>
default="normalizedString" />
</extension>
</complexContent>
</complexType>
<!-- positive integer type -->
<complexType name="fPositiveIntegerType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="positiveInteger"/>
default="positiveInteger" />
</extension>
</complexContent>
</complexType>
<!-- Custom / extension field type -->
<element name="fCustom"
type="rdeCsv:fCustomType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="fCustomType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="name" type="token"/>
type="token" />
<attribute name="type"
type="token" default="token"/>
default="token" />
</extension>
</complexContent>
</complexType>
<!-- Ordered list of field definitions for the csv -->
<complexType name="fieldsType">
<sequence maxOccurs="unbounded">
<element ref="rdeCsv:field"/> ref="rdeCsv:field" />
</sequence>
</complexType>
<!-- List of files -->
<complexType name="filesType">
<sequence>
<element name="file"
type="rdeCsv:fileType" maxOccurs="unbounded"/>
maxOccurs="unbounded" />
</sequence>
</complexType>
<!-- File definition -->
<complexType name="fileType">
<simpleContent>
<extension base="token">
<attribute name="compression" type="token"/>
type="token" />
<attribute name="encoding"
type="token" default="UTF-8"/>
default="UTF-8" />
<attribute name="cksum" type="token"/>
type="token" />
<attribute name="cksumAlg"
type="token" default="CRC32"/>
default="CRC32" />
</extension>
</simpleContent>
</complexType>
<!-- URL fields -->
<element name="fUrl"
type="rdeCsv:anyURIType" substitutionGroup="rdeCsv:field"/>
substitutionGroup="rdeCsv:field" />
<complexType name="anyURIType">
<complexContent>
<extension base="rdeCsv:fieldOptionalType">
<sequence/>
<sequence />
<attribute name="type"
type="token" default="anyURI"/>
default="anyURI" />
</extension>
</complexContent>
</complexType>
<!--
End of schema.
-->
</schema>