F Oracle Multimedia Metadata XML Schemas

This appendix lists the XML schemas used by the metadata methods of the ORDImage object type. When Oracle Multimedia is installed, these schemas are registered as global XML schemas in Oracle Database with Oracle XML DB.

Note:

The schemas in this appendix might not match the code shipped with the Oracle installation. For the final versions of these schemas, use the files provided with the installation.

The latest versions of these schemas are available as files located in the ord/xml/xsd directory under <ORACLE_HOME>. To examine the schemas, query the dictionary view ALL_XML_SCHEMAS. In addition, read the documentation embedded within each schema file for more information.

This appendix includes these XML schemas:

See Also:

F.1 XML Schema for EXIF Metadata

This schema is the content model for EXIF metadata retrieved from images. The namespace for this schema is http://xmlns.oracle.com/ord/meta/exif.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2004, 2008, Oracle and/or its affiliates.
All rights reserved. -->
<xsd:schema targetNamespace="http://xmlns.oracle.com/ord/meta/exif"
            xmlns="http://xmlns.oracle.com/ord/meta/exif"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            version="1.0">
 
  <xsd:annotation>
    <xsd:documentation>
    
      Introduction
 
        This is the Oracle Multimedia schema for image metadata stored
        in the EXIF format for digital still cameras. This schema supports
        tags defined up to EXIF version 2.21
 
        Metadata extracted only from the 0th IFD. For JPEG images, this means
        that the metadata comes from the main image in the file. Metadata is not
        extracted for the thumbnail image (1st IFD).
 
      Structure
 
        This schema defines a single global element exifMetadata which
        contains up to four child elements. Each child element contains tags
        from a TIFF IFD directory as defined by the EXIF standard.
 
              TiffIfd contains tags from the TIFF IFD. 
              ExifIfd contains tags from the EXIF IFD. 
              GpsIfd  contains tags from the GPS IFD. 
              InteroperabilityIfd contains tags from the Interoperability IFD.
 
        All elements that derive directly from EXIF tags contain a required 
        "tag" attribute. The value of this attribute is the Tag ID value as
        defined in the EXIF standard.
   
      Unsupported tags
        The table below lists tags that are defined by the EXIF standard
        but which the current version of Oracle Multimedia does not 
        read from image files. Note that this schema does define data 
        models for these tags and future versions of Oracle
        Multimedia may parse these fields from image files. Those tags 
        could be represented by documents conforming to this schema.
 
          These tags are from the TIFF IFD
          tag   301:  TransferFunction
          tag   318:  WhitePoint
          tag   319:  PrimaryChromaticities
          tag   529:  YCbCrCoefficients
          tag   532:  ReferenceWhiteBlack
 
          tag   273:  StripOffsets
          tag   278:  RowsPerStrip
          tag   279:  StripByteCounts
          tag   513:  JPEGInterChangeFormat
          tag   514:  JPEGInterChangeFormatLength
 
          These tags are from the EXIF IFD
 
          tag 34855:  ISOSpeedRatings
          tag 34856:  OECF
          tag 37396:  SubjectArea
          tag 37500:  MakerNote
          tag 41484:  SpatialFrequencyResponse
          tag 41492:  SubjectLocation
          tag 41730:  CFAPattern
          tag 41995:  DeviceSettingsDescription
          tag 42016:  ImageUniqueID
 
    </xsd:documentation>
  </xsd:annotation>
 
 
  <!-- 
    ATTRIBUTE DEFINITIONS 
   -->
  <xsd:attributeGroup name="exifAttrs">
    <xsd:annotation>
      <xsd:documentation>
         This attribute group defines a single attribute that is required
         for all elements. The tag attribute value is the TIFF tag value 
         (in decimal) that is the data source  for the tag.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="tag" type="xsd:nonNegativeInteger" use="required"/>
  </xsd:attributeGroup>
 
 
  <!-- BASE TYPE DEFINITIONS
         Base types are formed from the simple XML schema types.
         Sometimes restrictions are added.
         They are extended with the required "tag" attribute
   -->
  <xsd:complexType name="positiveIntegerType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:positiveInteger">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
  <xsd:complexType name="nonNegativeIntegerType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:nonNegativeInteger">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
  <xsd:complexType name="stringType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
  <xsd:complexType name="nonNegativeRealType">
    <xsd:simpleContent>
      <xsd:extension base="nonNegativeReal">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="nonNegativeReal">
    <xsd:restriction base="xsd:float">
      <xsd:minInclusive value="0"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="realType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:float">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
  <xsd:complexType name="dateType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:date">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
  <xsd:complexType name="dateTimeType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:dateTime">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
  <xsd:complexType name="timeType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:time">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
 
  <!-- EXIF TYPE DEFINITIONS
       Generally these types are formed from a simple type that is restricted.
       The simple type is extended with the required 'tag' attribute
       These types form the basis for the document elements
    -->
  <xsd:complexType name="colorSpaceType">
    <xsd:simpleContent>
      <xsd:extension base="colorSpace_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="colorSpace_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="sRGB"/>
      <xsd:enumeration value="Uncalibrated"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="exposureProgramType">
    <xsd:simpleContent>
      <xsd:extension base="exposureProgram_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="exposureProgram_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Not defined"/>
      <xsd:enumeration value="Manual"/>
      <xsd:enumeration value="Normal program"/>
      <xsd:enumeration value="Aperture priority"/>
      <xsd:enumeration value="Shutter priority"/>
      <xsd:enumeration value="Creative program"/>
      <xsd:enumeration value="Action program"/>
      <xsd:enumeration value="Portrait mode"/>
      <xsd:enumeration value="Landscape mode"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="meteringModeType">
    <xsd:simpleContent>
      <xsd:extension base="meteringMode_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="meteringMode_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="unknown"/>
      <xsd:enumeration value="Average"/>
      <xsd:enumeration value="Center Weighted Average"/>
      <xsd:enumeration value="Spot"/>
      <xsd:enumeration value="MultiSpot"/>
      <xsd:enumeration value="Pattern"/>
      <xsd:enumeration value="Partial"/>
      <xsd:enumeration value="other"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="lightSourceType">
    <xsd:simpleContent>
      <xsd:extension base="lightSource_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="lightSource_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="unknown"/>
      <xsd:enumeration value="Daylight"/>
      <xsd:enumeration value="Fluorescent"/>
      <xsd:enumeration value="Tungsten"/>
      <xsd:enumeration value="Flash"/>
      <xsd:enumeration value="Fine weather"/>
      <xsd:enumeration value="Cloudy weather"/>
      <xsd:enumeration value="Shade"/>
      <xsd:enumeration value="Daylight fluorescent"/>
      <xsd:enumeration value="Day white fluorescent"/>
      <xsd:enumeration value="Cool white fluorescent"/>
      <xsd:enumeration value="Standard light A"/>
      <xsd:enumeration value="Standard light B"/>
      <xsd:enumeration value="Standard light C"/>
      <xsd:enumeration value="D55"/>
      <xsd:enumeration value="D65"/>
      <xsd:enumeration value="D75"/>
      <xsd:enumeration value="D50"/>
      <xsd:enumeration value="ISO studio tungsten"/>
      <xsd:enumeration value="other light source"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="flashType">
    <xsd:sequence>
      <xsd:element name="Fired" type="yesNo_t"/>
      <xsd:element name="Return" type="flashReturn_t" minOccurs="0"/>
      <xsd:element name="Mode" type="flashMode_t" minOccurs="0"/>
      <xsd:element name="Function" type="yesNo_t" minOccurs="0"/>
      <xsd:element name="RedEyeReduction" type="yesNo_t" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="exifAttrs"/>
  </xsd:complexType>
  <xsd:simpleType name="yesNo_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Yes"/>
      <xsd:enumeration value="No"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="flashReturn_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="No strobe return function"/>
      <xsd:enumeration value="Strobe return not detected"/>
      <xsd:enumeration value="Strobe return detected"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="flashMode_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="unknown"/>
      <xsd:enumeration value="Compulsory firing"/>
      <xsd:enumeration value="Compulsory suppression"/>
      <xsd:enumeration value="Auto"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="resolutionType">
    <xsd:simpleContent>
      <xsd:extension base="resolution_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="resolution_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="inches"/>
      <xsd:enumeration value="centimeters"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="sensingMethodType">
    <xsd:simpleContent>
      <xsd:extension base="sensingMethod_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="sensingMethod_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Not defined"/>
      <xsd:enumeration value="One-chip color area"/>
      <xsd:enumeration value="Two-chip color area"/>
      <xsd:enumeration value="Three-chip color area"/>
      <xsd:enumeration value="Color-sequential area"/>
      <xsd:enumeration value="Trilinear"/>
      <xsd:enumeration value="Color sequential linear"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="fileSourceType">
    <xsd:simpleContent>
      <xsd:extension base="fileSource_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="fileSource_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="others"/>
      <xsd:enumeration value="scanner of transparent type"/>
      <xsd:enumeration value="scanner of reflex type"/>
      <xsd:enumeration value="DSC"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="bitsPerSampleType">
    <xsd:simpleContent>
      <xsd:extension base="bitsPerSample_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="bitsPerSample_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="8,8,8"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="compressionType">
    <xsd:simpleContent>
      <xsd:extension base="compression_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="compression_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="uncompressed"/>
      <xsd:enumeration value="JPEG"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="photometricInterpretationType">
    <xsd:simpleContent>
      <xsd:extension base="photometricInterpretation_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="photometricInterpretation_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RGB"/>
      <xsd:enumeration value="YCbCr"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="orientationType">
    <xsd:simpleContent>
      <xsd:extension base="orientation_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="orientation_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="top left"/>
      <xsd:enumeration value="top right"/>
      <xsd:enumeration value="bottom right"/>
      <xsd:enumeration value="bottom left"/>
      <xsd:enumeration value="left top"/>
      <xsd:enumeration value="right top"/>
      <xsd:enumeration value="right bottom"/>
      <xsd:enumeration value="left bottom"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="planarConfigurationType">
    <xsd:simpleContent>
      <xsd:extension base="planarConfiguration_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="planarConfiguration_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="chunky"/>
      <xsd:enumeration value="planar"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="yCbCrSubSamplingType">
    <xsd:simpleContent>
      <xsd:extension base="yCbCrSubSampling_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="yCbCrSubSampling_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="4:2:2"/>
      <xsd:enumeration value="4:2:0"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="yCbCrPositioningType">
    <xsd:simpleContent>
      <xsd:extension base="yCbCrPositioning_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="yCbCrPositioning_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="centered"/>
      <xsd:enumeration value="co-sited"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="stripOffsetsType">
    <xsd:sequence>
      <xsd:element name="StripOffset" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Index" type="xsd:nonNegativeInteger"/>
            <xsd:element name="Offset" type="xsd:positiveInteger"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <xsd:attributeGroup ref="exifAttrs"/>
  </xsd:complexType>
 
  <xsd:complexType name="stripByteCountsType">
    <xsd:sequence>
      <xsd:element name="StripByteCount" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Index" type="xsd:nonNegativeInteger"/>
            <xsd:element name="Bytes" type="xsd:positiveInteger"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <xsd:attributeGroup ref="exifAttrs"/>
  </xsd:complexType>
 
  <xsd:complexType name="whitePointType">
    <xsd:complexContent>
      <xsd:extension base="chromaticity">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
 
  <xsd:complexType name="primaryChromaticitiesType">
    <xsd:sequence>
      <xsd:element name="Color_1" type="chromaticity"/>
      <xsd:element name="Color_2" type="chromaticity"/>
      <xsd:element name="Color_3" type="chromaticity"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="exifAttrs"/>
  </xsd:complexType>
 
  <xsd:complexType name="chromaticity">
    <xsd:sequence>
      <xsd:element name="X" type="nonNegativeReal"/>
      <xsd:element name="Y" type="nonNegativeReal"/>
    </xsd:sequence>
  </xsd:complexType>
 
  <xsd:complexType name="yCbCrCoefficientsType">
    <xsd:sequence>
      <xsd:element name="Coefficient_1" type="nonNegativeReal"/>
      <xsd:element name="Coefficient_2" type="nonNegativeReal"/>
      <xsd:element name="Coefficient_3" type="nonNegativeReal"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="exifAttrs"/>
  </xsd:complexType>
 
  <xsd:complexType name="subjectLocationType">
    <xsd:sequence>
      <xsd:element name="CenterX" type="xsd:nonNegativeInteger"/>
      <xsd:element name="CenterY" type="xsd:nonNegativeInteger"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="exifAttrs"/>
  </xsd:complexType>
 
  <xsd:complexType name="subjectAreaType">
    <xsd:complexContent>
      <xsd:extension base="subjectLocationType">
        <xsd:choice>
          <xsd:element name="Diameter" type="xsd:positiveInteger"/>
          <xsd:sequence>
            <xsd:element name="Width" type="xsd:positiveInteger"/>
            <xsd:element name="Height" type="xsd:positiveInteger"/>
          </xsd:sequence>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
 
  <xsd:complexType name="customRenderedType">
    <xsd:simpleContent>
      <xsd:extension base="customRendered_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="customRendered_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Normal process"/>
      <xsd:enumeration value="Custom process"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="exposureModeType">
    <xsd:simpleContent>
      <xsd:extension base="exposureMode_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="exposureMode_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Auto exposure"/>
      <xsd:enumeration value="Manual exposure"/>
      <xsd:enumeration value="Auto bracket"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="whiteBalanceType">
    <xsd:simpleContent>
      <xsd:extension base="whiteBalance_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="whiteBalance_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Auto"/>
      <xsd:enumeration value="Manual"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="sceneCaptureType">
    <xsd:simpleContent>
      <xsd:extension base="sceneCapture_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="sceneCapture_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Standard"/>
      <xsd:enumeration value="Landscape"/>
      <xsd:enumeration value="Portrait"/>
      <xsd:enumeration value="Night scene"/>
      <xsd:enumeration value=""/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gainControlType">
    <xsd:simpleContent>
      <xsd:extension base="gainControl_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gainControl_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="None"/>
      <xsd:enumeration value="Low gain up"/>
      <xsd:enumeration value="High gain up"/>
      <xsd:enumeration value="Low gain down"/>
      <xsd:enumeration value="High gain down"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="contrastType">
    <xsd:simpleContent>
      <xsd:extension base="contrast_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="contrast_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Normal"/>
      <xsd:enumeration value="Soft"/>
      <xsd:enumeration value="Hard"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="saturationType">
    <xsd:simpleContent>
      <xsd:extension base="saturation_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="saturation_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Normal"/>
      <xsd:enumeration value="Low saturation"/>
      <xsd:enumeration value="High saturation"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="sharpnessType">
    <xsd:simpleContent>
      <xsd:extension base="contrast_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
 
  <xsd:complexType name="subjectDistanceRangeType">
    <xsd:simpleContent>
      <xsd:extension base="subjectDistanceRange_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="subjectDistanceRange_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="unknown"/>
      <xsd:enumeration value="Macro"/>
      <xsd:enumeration value="Close view"/>
      <xsd:enumeration value="Distant view"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="uuidType">
    <xsd:simpleContent>
      <xsd:extension base="uuid_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="uuid_t">
    <xsd:restriction base="xsd:hexBinary">
      <xsd:pattern value=".{8}-.{4}-.{4}-.{4}-.{12}"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <!-- 
       TYPES FOR THE GPS IFD 
   -->
  <xsd:complexType name="gpsLatitudeRefType">
    <xsd:simpleContent>
      <xsd:extension base="gpsLatitudeRef_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsLatitudeRef_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="North latitude"/>
      <xsd:enumeration value="South latitude"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsAltitudeRefType">
    <xsd:simpleContent>
      <xsd:extension base="gpsAltitudeRef_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsAltitudeRef_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Sea level"/>
      <xsd:enumeration value="Sea level reference"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsLatitudeType">
    <xsd:simpleContent>
      <xsd:extension base="gpsLatitude_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsLatitude_t">
    <xsd:restriction base="xsd:float">
      <xsd:minInclusive value="0.0"/>
      <xsd:maxInclusive value="90.0"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsLongitudeRefType">
    <xsd:simpleContent>
      <xsd:extension base="gpsLongitudeRef_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsLongitudeRef_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="East longitude"/>
      <xsd:enumeration value="West longitude"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsLongitudeType">
    <xsd:simpleContent>
      <xsd:extension base="gpsLongitude_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsLongitude_t">
    <xsd:restriction base="xsd:float">
      <xsd:minInclusive value="0.0"/>
      <xsd:maxInclusive value="180.0"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsBearingType">
    <xsd:simpleContent>
      <xsd:extension base="gpsBearing_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsBearing_t">
    <xsd:restriction base="xsd:float">
      <xsd:minInclusive value="0.0"/>
      <xsd:maxExclusive value="360.0"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsStatusType">
    <xsd:simpleContent>
      <xsd:extension base="gpsStatus_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsStatus_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Measurement in progress"/>
      <xsd:enumeration value="Measurement interoperability"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsMeasureModeType">
    <xsd:simpleContent>
      <xsd:extension base="gpsMeasureMode_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsMeasureMode_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="2-dimensional measurement"/>
      <xsd:enumeration value="3-dimensional measurement"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsSpeedRefType">
    <xsd:simpleContent>
      <xsd:extension base="gpsSpeedRef_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsSpeedRef_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Kilometers per hour"/>
      <xsd:enumeration value="Miles per hour"/>
      <xsd:enumeration value="Knots"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsDirectionType">
    <xsd:simpleContent>
      <xsd:extension base="gpsDirection_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsDirection_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="True direction"/>
      <xsd:enumeration value="Magnetic direction"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsDistanceRefType">
    <xsd:simpleContent>
      <xsd:extension base="gpsDistanceRef_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsDistanceRef_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Kilometers"/>
      <xsd:enumeration value="Miles"/>
      <xsd:enumeration value="Knots"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <xsd:complexType name="gpsDifferentialType">
    <xsd:simpleContent>
      <xsd:extension base="gpsDifferential_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="gpsDifferential_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Measurement without differential correction"/>
      <xsd:enumeration value="Differential correction applied"/>
    </xsd:restriction>
  </xsd:simpleType>
 
  <!-- 
       TYPES FOR THE INTEROPERABILTY IFD
     -->
  <xsd:complexType name="interoperabilityType">
    <xsd:simpleContent>
      <xsd:extension base="interoperability_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="interoperability_t">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="R98"/>
      <xsd:enumeration value="THM"/>
      <xsd:enumeration value="R03"/>
    </xsd:restriction>
  </xsd:simpleType>
 
 
  <!-- GENERIC TYPE
 
        A generic type to hold any type of tag data. 
        Defines a name, value, datatype triplet 
        Datatype values refer to types as defined by XML Schema.
 
        singleFieldType is for EXIF tag that define a single 
        value, the common case.
 
        repeatedFieldTyp is for the uncommon case where many
        data items are defined in an EXIF tag.
 
    -->
  <xsd:complexType name="singleFieldType">
    <xsd:complexContent>
      <xsd:extension base="singleField_t">
        <xsd:attributeGroup ref="exifAttrs"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
    
  <xsd:complexType name="repeatedFieldType">
    <xsd:sequence>
      <xsd:element name="Field" type="singleField_t" minOccurs="1"
          maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="exifAttrs"/>
  </xsd:complexType>
 
  <xsd:complexType name="singleField_t">
    <xsd:sequence>
      <xsd:element name="Name" type="xsd:string"/>
      <xsd:element name="Value" type="xsd:string"/>
      <xsd:element name="Datatype">
        <xsd:simpleType>
          <xsd:annotation>
            <xsd:documentation>The enumerated datatype values refer to types 
                defined by XML Schema
            </xsd:documentation>
          </xsd:annotation>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="string"/>
            <xsd:enumeration value="integer"/>
            <xsd:enumeration value="float"/>
            <xsd:enumeration value="date"/>
            <xsd:enumeration value="time"/>
            <xsd:enumeration value="dateTime"/>
            <xsd:enumeration value="hexBinary"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
 
  <!-- END TYPE DEFINITIONS -->
 
  <!-- 
       THE GLOBAL ELEMENT
    -->
  <xsd:element name="exifMetadata">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="TiffIfd" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>Tags from the TIFF IFD</xsd:documentation>
          </xsd:annotation>
          <xsd:complexType>
            <xsd:all>
 
              <!-- Tags relating to image data structure -->
              <xsd:element name="ImageWidth" type="positiveIntegerType"
                  minOccurs="0"/>
              <xsd:element name="ImageLength" type="positiveIntegerType"
                  minOccurs="0"/>
              <xsd:element name="BitsPerSample" type="bitsPerSampleType"
                  minOccurs="0"/>
              <xsd:element name="Compression" type="compressionType"
                  minOccurs="0"/>
              <xsd:element name="PhotometricInterpretation"
                  type="photometricInterpretationType" minOccurs="0"/>
              <xsd:element name="Orientation" type="orientationType"
                  minOccurs="0"/>
              <xsd:element name="SamplesPerPixel" type="positiveIntegerType"
                  minOccurs="0"/>
              <xsd:element name="PlanarConfiguration"
                  type="planarConfigurationType" minOccurs="0"/>
              <xsd:element name="YCbCrSubSampling" type="yCbCrSubSamplingType"
                  minOccurs="0"/>
              <xsd:element name="YCbCrPositioning" type="yCbCrPositioningType"
                  minOccurs="0"/>
              <xsd:element name="XResolution" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Unit is pixels per 
                      ResolutionUnit</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="YResolution" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Unit is pixels per 
                      ResolutionUnit</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="ResolutionUnit" type="resolutionType"
                  minOccurs="0"/>
 
              <!--Tags relating to recording offset -->
              <xsd:element name="StripOffsets" type="stripOffsetsType"
                  minOccurs="0"/>
              <xsd:element name="RowsPerStrip" type="positiveIntegerType"
                  minOccurs="0"/>
              <xsd:element name="StripByteCounts" type="stripByteCountsType"
                  minOccurs="0"/>
              <xsd:element name="JPEGInterChangeFormat" type="positiveIntegerType"
                  minOccurs="0"/>
              <xsd:element name="JPEGInterChangeFormatLength"
                  type="positiveIntegerType" minOccurs="0"/>
 
              <!-- Tags relating to image data characteristics -->
              <xsd:element name="TransferFunction" type="xsd:anyType"
                  minOccurs="0"/>
              <xsd:element name="WhitePoint" type="whitePointType" minOccurs="0"/>
              <xsd:element name="PrimaryChromaticities"
                  type="primaryChromaticitiesType" minOccurs="0"/>
              <xsd:element name="YCbCrCoefficients" type="yCbCrCoefficientsType"
                  minOccurs="0"/>
              <xsd:element name="ReferenceBlackWhite"
                  type="primaryChromaticitiesType" minOccurs="0"/>
 
              <!--Other tags -->
              <xsd:element name="DateTime" type="dateTimeType" minOccurs="0"/>
              <xsd:element name="ImageDescription" type="stringType"
                  minOccurs="0"/>
              <xsd:element name="Make" type="stringType" minOccurs="0"/>
              <xsd:element name="Model" type="stringType" minOccurs="0"/>
              <xsd:element name="Software" type="stringType" minOccurs="0"/>
              <xsd:element name="Artist" type="stringType" minOccurs="0"/>
              <xsd:element name="Copyright" type="stringType" minOccurs="0"/>
 
              <!-- Placeholder tags for future tags that may be defined -->
              <xsd:element name="TiffField1" type="singleFieldType"
                  minOccurs="0"/>
              <xsd:element name="TiffField2" type="singleFieldType"
                  minOccurs="0"/>
              <xsd:element name="TiffField3" type="repeatedFieldType"
                  minOccurs="0"/>
 
            </xsd:all>
          </xsd:complexType>
        </xsd:element>
 
        <xsd:element name="ExifIfd">
          <xsd:annotation>
            <xsd:documentation>Tags from the EXIF IFD</xsd:documentation>
          </xsd:annotation>
          <xsd:complexType>
            <xsd:all>
 
              <!-- Tags releating to version -->
              <xsd:element name="ExifVersion" type="stringType" minOccurs="0"/>
              <xsd:element name="FlashpixVersion" type="stringType"
                  minOccurs="0"/>
 
              <!-- Tags relating to image data characteristics -->
              <xsd:element name="ColorSpace" type="colorSpaceType" minOccurs="0"/>
 
              <!-- Tags relating to image configuration -->
              <xsd:element name="ComponentsConfiguration" type="stringType"
                  minOccurs="0"/>
              <xsd:element name="CompressedBitsPerPixel"
                  type="nonNegativeRealType" minOccurs="0"/>
              <xsd:element name="PixelXDimension" type="nonNegativeIntegerType"
                  minOccurs="0"/>
              <xsd:element name="PixelYDimension" type="nonNegativeIntegerType"
                  minOccurs="0"/>
 
              <!-- Tags relating to user information -->
              <xsd:element name="MakerNote" type="repeatedFieldType"
                  minOccurs="0"/>
              <xsd:element name="UserComment" type="stringType" minOccurs="0"/>
 
              <!-- Tag relating to related file information -->
              <xsd:element name="RelatedSoundFile" type="stringType"
                  minOccurs="0"/>
 
              <!-- Tags relating to date and time -->
              <xsd:element name="DateTimeOriginal" type="dateTimeType"
                  minOccurs="0"/>
              <xsd:element name="DateTimeDigitized" type="dateTimeType"
                  minOccurs="0"/>
              <xsd:element name="SubSecTime" type="nonNegativeIntegerType"
                  minOccurs="0"/>
              <xsd:element name="SubSecTimeOriginal" type="nonNegativeIntegerType"
                  minOccurs="0"/>
              <xsd:element name="SubSecTimeDigitized"
                  type="nonNegativeIntegerType" minOccurs="0"/>
 
              <!-- Tags relating to picture taking conditions -->
              <xsd:element name="ExposureTime" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Units is seconds</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="FNumber" type="nonNegativeRealType"
                  minOccurs="0"/>
              <xsd:element name="ExposureProgram" type="exposureProgramType"
                  minOccurs="0"/>
              <xsd:element name="SpectralSensitivity" type="stringType"
                  minOccurs="0"/>
              <xsd:element name="ISOSpeedRatings" type="nonNegativeIntegerType"
                  minOccurs="0"/>
              <xsd:element name="OECF" type="repeatedFieldType" minOccurs="0"/>
              <xsd:element name="ShutterSpeedValue" type="realType" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is the APEX 
                      value</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="ApertureValue" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The  unit is the APEX 
                      value</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="BrightnessValue" type="realType" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is the APEX 
                      value</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="ExposureBiasValue" type="realType" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is the APEX 
                      value</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="MaxApertureValue" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is the APEX 
                      value</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="SubjectDistance" type="stringType" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is meters</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="MeteringMode" type="meteringModeType"
                  minOccurs="0"/>
              <xsd:element name="LightSource" type="lightSourceType"
                  minOccurs="0"/>
              <xsd:element name="Flash" type="flashType" minOccurs="0"/>
              <xsd:element name="FocalLength" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is millimeters.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="SubjectArea" type="subjectAreaType"
                  minOccurs="0"/>
              <xsd:element name="FlashEnergy" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is Beam Candle Power 
                      Seconds</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="SpatialFrequencyResponse"
                  type="repeatedFieldType" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Not implemented</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="FocalPlaneXResolution" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is pixels</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="FocalPlaneYResolution" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>The unit is pixels</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="FocalPlaneResolutionUnit" type="resolutionType"
                  minOccurs="0"/>
              <xsd:element name="SubjectLocation" type="subjectLocationType"
                  minOccurs="0"/>
              <xsd:element name="ExposureIndex" type="nonNegativeRealType"
                  minOccurs="0"/>
              <xsd:element name="SensingMethod" type="sensingMethodType"
                  minOccurs="0"/>
              <xsd:element name="FileSource" type="fileSourceType" minOccurs="0"/>
              <xsd:element name="SceneType" type="stringType" minOccurs="0"/>
              <xsd:element name="CFAPattern" type="repeatedFieldType"
                  minOccurs="0"/>
              <xsd:element name="CustomRendered" type="customRenderedType"
                  minOccurs="0"/>
              <xsd:element name="ExposureMode" type="exposureModeType"
                  minOccurs="0"/>
              <xsd:element name="WhiteBalance" type="whiteBalanceType"
                  minOccurs="0"/>
              <xsd:element name="DigitalZoomRatio" type="nonNegativeRealType"
                  minOccurs="0"/>
              <xsd:element name="FocalLengthIn35mmFilm" type="positiveIntegerType"
                  minOccurs="0"/>
              <xsd:element name="SceneCaptureType" type="sceneCaptureType"
                  minOccurs="0"/>
              <xsd:element name="GainControl" type="gainControlType"
                  minOccurs="0"/>
              <xsd:element name="Contrast" type="contrastType" minOccurs="0"/>
              <xsd:element name="Saturation" type="saturationType" minOccurs="0"/>
              <xsd:element name="Sharpness" type="sharpnessType" minOccurs="0"/>
              <xsd:element name="DeviceSettingDescription"
                  type="repeatedFieldType" minOccurs="0"/>
              <xsd:element name="SubjectDistanceRange"
                  type="subjectDistanceRangeType" minOccurs="0"/>
              <xsd:element name="ImageUniqueID" type="uuidType" minOccurs="0"/>
              <xsd:element name="Gamma" type="nonNegativeRealType" minOccurs="0"/>
 
              <!-- Placeholder tags for future tags that may be defined -->
              <xsd:element name="ExifField1" type="singleFieldType"
                  minOccurs="0"/>
              <xsd:element name="ExifField2" type="singleFieldType"
                  minOccurs="0"/>
              <xsd:element name="ExifField3" type="repeatedFieldType"
                  minOccurs="0"/>
 
            </xsd:all>
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:complexType>
        </xsd:element>
 
        <xsd:element name="GpsIfd" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>Tags from the GPS IFD</xsd:documentation>
          </xsd:annotation>
          <xsd:complexType>
            <xsd:all>
              <xsd:element name="GPSVersionID" type="stringType" minOccurs="0"/>
              <xsd:element name="GPSLatitudeRef" type="gpsLatitudeRefType"
                  minOccurs="0"/>
              <xsd:element name="GPSLatitude" type="gpsLatitudeType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Unit is decimal degrees</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="GPSLongitudeRef" type="gpsLongitudeRefType"
                  minOccurs="0"/>
              <xsd:element name="GPSLongitude" type="gpsLongitudeType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Unit is decimal degrees</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="GPSAltitudeRef" type="gpsAltitudeRefType"
                  minOccurs="0"/>
              <xsd:element name="GPSAltitude" type="nonNegativeRealType"
                  minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Unit is meters</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="GPSTimeStamp" type="timeType" minOccurs="0"/>
              <xsd:element name="GPSSatellites" type="stringType" minOccurs="0"/>
              <xsd:element name="GPSStatus" type="gpsStatusType" minOccurs="0"/>
              <xsd:element name="GPSMeasureMode" type="gpsMeasureModeType"
                  minOccurs="0"/>
              <xsd:element name="GPSDOP" type="nonNegativeRealType"
                  minOccurs="0"/>
              <xsd:element name="GPSSpeedRef" type="gpsSpeedRefType"
                  minOccurs="0"/>
              <xsd:element name="GPSSpeed" type="nonNegativeRealType"
                  minOccurs="0"/>
              <xsd:element name="GPSTrackRef" type="gpsDirectionType"
                  minOccurs="0"/>
              <xsd:element name="GPSTrack" type="gpsBearingType" minOccurs="0"/>
              <xsd:element name="GPSImgDirectionRef" type="gpsDirectionType"
                  minOccurs="0"/>
              <xsd:element name="GPSImgDirection" type="gpsBearingType"
                  minOccurs="0"/>
              <xsd:element name="GPSMapDatum" type="stringType" minOccurs="0"/>
              <xsd:element name="GPSDestLatitudeRef" type="gpsLatitudeRefType"
                  minOccurs="0"/>
              <xsd:element name="GPSDestLatitude" type="gpsLatitudeType"
                  minOccurs="0"/>
              <xsd:element name="GPSDestLongitudeRef" type="gpsLongitudeRefType"
                  minOccurs="0"/>
              <xsd:element name="GPSDestLongitude" type="gpsLongitudeType"
                  minOccurs="0"/>
              <xsd:element name="GPSDestBearingRef" type="gpsDirectionType"
                  minOccurs="0"/>
              <xsd:element name="GPSDestBearing" type="gpsBearingType"
                  minOccurs="0"/>
              <xsd:element name="GPSDestDistanceRef" type="gpsDistanceRefType"
                  minOccurs="0"/>
              <xsd:element name="GPSDestDistance" type="nonNegativeRealType"
                  minOccurs="0"/>
              <xsd:element name="GPSProcessingMethod" type="stringType"
                  minOccurs="0"/>
              <xsd:element name="GPSAreaInformation" type="stringType"
                  minOccurs="0"/>
              <xsd:element name="GPSDateStamp" type="dateType" minOccurs="0"/>
              <xsd:element name="GPSDifferential" type="gpsDifferentialType"
                  minOccurs="0"/>
 
              <!-- Placeholder tags for future tags that may be defined -->
              <xsd:element name="GPSField1" type="singleFieldType" minOccurs="0"/>
              <xsd:element name="GPSField2" type="singleFieldType" minOccurs="0"/>
              <xsd:element name="GPSField3" type="repeatedFieldType"
                  minOccurs="0"/>
            </xsd:all>
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:complexType>
        </xsd:element>
 
        <xsd:element name="InteroperabilityIfd" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>Tags from the Interoperability
                IFD</xsd:documentation>
          </xsd:annotation>
          <xsd:complexType>
            <xsd:all>
              <xsd:element name="InteroperabilityIndex"
                  type="interoperabilityType" minOccurs="0"/>
            </xsd:all>
            <xsd:attributeGroup ref="exifAttrs"/>
          </xsd:complexType>
        </xsd:element>
 
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

F.2 XML Schema for IPTC-IIM Metadata

This schema is the content model for IPTC-IIM metadata retrieved from images. The namespace for this schema is http://xmlns.oracle.com/ord/meta/iptc.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2004, 2008, Oracle. All rights reserved.  -->
<xsd:schema  xmlns="http://xmlns.oracle.com/ord/meta/iptc" 
     targetNamespace="http://xmlns.oracle.com/ord/meta/iptc" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     elementFormDefault="qualified" attributeFormDefault="unqualified">
 
  <xsd:annotation>
    <xsd:documentation>
    
      Introduction
        This is the Oracle Multimedia schema for metadata stored in Application
        record sets of the IPTC-NAA Information Interchange Model Version 4.
        This metadata is often referred to as 'IPTC' tags.
 
        For the JPEG file format, IPTC metadata is parsed from the APP13 marker.
        For the TIFF file format, IPTC metadata is parsed from tag 33723.
 
        All tags with string values are decoded using the ISO-8859-1 character
        set. The resulting strings may contain characters that are legal in the
        character set but are illegal in XML documents. Illegal XML characters
        are replaced with the space (0x20) character.
 
      Supported datasets
        The following datasets from the application record are extracted.
       
          2:00  recordVersion
          2:05  objectName
          2:07  editStatus
          2:10  urgency
          2:15  category
          2:20  supplementalCategory
          2:22  fixtureIdentifer
          2:25  keyword
          2:26  contentLocation:code
          2:27  contentLocation:name
          2:40  instructions
          2:55  dateCreated
          2:60  timeCreated
          2:62  digitalCreationDate
          2:63  digitalCreationTime
          2:80  byline:author
          2:85  byline:authorTitle
          2:90  city
          2:92  subLocation
          2:95  provinceState
          2:100 country
          2:101 location
          2:103 transmissionReference
          2:105 headline
          2:110 credit
          2:115 source
          2:116 copyright
          2:118 contact
          2:120 caption
          2:122 captionWriter
          2:135 languageId
      
      Structure
        The schema defines a number of types, both simple and complex,
        to represent some of the IPTC tags. The itpcMetadataType is defined 
        as a sequence of all the supported IPTC tags. This type is used to define
        a single global element that can appear in an instance document.
 
    </xsd:documentation>
  </xsd:annotation>
 
  <!-- Basic type definitions  -->
  <xsd:simpleType name="urgencyType">
    <xsd:restriction base="xsd:positiveInteger">
      <xsd:minExclusive value="1"/>
      <xsd:maxInclusive value="8"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="locationType">
    <xsd:sequence>
      <xsd:element name="code" type="xsd:string"/>
      <xsd:element name="name" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="bylineType">
    <xsd:sequence>
      <xsd:element name="author" type="xsd:string"/>
      <xsd:element name="authorTitle" minOccurs="0" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
 
  <!-- Type definition for the global element  -->
  <xsd:complexType name="iptcMetadataType">
    <xsd:sequence>
      <xsd:element name="recordVersion" minOccurs="0" type="xsd:integer"/>
      <xsd:element name="objectName" minOccurs="0" type="xsd:string"/>
      <xsd:element name="editStatus" minOccurs="0" type="xsd:string"/>
      <xsd:element name="urgency" minOccurs="0" type="urgencyType"/>
      <xsd:element name="category" minOccurs="0" type="xsd:string"/>
      <xsd:element name="supplementalCategory" minOccurs="0" maxOccurs="unbounded"
           type="xsd:string"/>
      <xsd:element name="fixtureIdentifier" minOccurs="0" type="xsd:string"/>
      <xsd:element name="keyword" minOccurs="0" maxOccurs="unbounded"
           type="xsd:string"/>
      <xsd:element name="contentLocation" minOccurs="0" maxOccurs="unbounded"
           type="locationType"/>
      <xsd:element name="instructions" minOccurs="0" type="xsd:string"/>
      <xsd:element name="dateCreated" minOccurs="0" type="xsd:date"/>
      <xsd:element name="timeCreated" minOccurs="0" type="xsd:string"/>
      <xsd:element name="digitalCreationDate" minOccurs="0"   type="xsd:date"/>
      <xsd:element name="digitalCreationTime" minOccurs="0"  type="xsd:string"/>
      <xsd:element name="byline" minOccurs="0" maxOccurs="unbounded"
           type="bylineType"/>
      <xsd:element name="city" minOccurs="0" type="xsd:string"/>
      <xsd:element name="subLocation" minOccurs="0" type="xsd:string"/>
      <xsd:element name="provinceState" minOccurs="0" type="xsd:string"/>
      <xsd:element name="country" minOccurs="0" type="xsd:string"/>
      <xsd:element name="location" minOccurs="0" type="xsd:string"/>
      <xsd:element name="transmissionReference" minOccurs="0" type="xsd:string"/>
      <xsd:element name="headline" minOccurs="0" type="xsd:string"/>
      <xsd:element name="credit" minOccurs="0" type="xsd:string"/>
      <xsd:element name="source" minOccurs="0" type="xsd:string"/>
      <xsd:element name="copyright" minOccurs="0" type="xsd:string"/>
      <xsd:element name="contact" minOccurs="0" maxOccurs="unbounded"
           type="xsd:string"/>
      <xsd:element name="caption" minOccurs="0" type="xsd:string"/>
      <xsd:element name="captionWriter" minOccurs="0" maxOccurs="unbounded"
           type="xsd:string"/>
      <xsd:element name="languageId" minOccurs="0" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
 
  <!-- The gobal element -->
  <xsd:element name="iptcMetadata" type="iptcMetadataType"/>
 
</xsd:schema>

F.3 XML Schema for ORDImage Attributes

This schema is the content model for the object attributes of ORDImage. The namespace for this schema is http://xmlns.oracle.com/ord/meta/ordimage.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2004, 2005 Oracle.  All rights reserved. -->
<xsd:schema xmlns="http://xmlns.oracle.com/ord/meta/ordimage" 
     targetNamespace="http://xmlns.oracle.com/ord/meta/ordimage" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     elementFormDefault="qualified" attributeFormDefault="unqualified">
 
  <xsd:annotation>
    <xsd:documentation>
 
      Introduction
        Oracle Multimedia schema for ORDSYS.ORDImage attributes
        Elements are optional and can appear in any order.
    </xsd:documentation>
  </xsd:annotation>
 
  <xsd:complexType name="ordImageAttributesType">
    <xsd:all minOccurs="0">
      <xsd:element name="height" type="xsd:positiveInteger" minOccurs="0"/>
      <xsd:element name="width" type="xsd:positiveInteger" minOccurs="0"/>
      <xsd:element name="contentLength" type="xsd:positiveInteger" minOccurs="0"/>
      <xsd:element name="fileFormat" type="xsd:string" minOccurs="0"/>
      <xsd:element name="contentFormat" type="xsd:string" minOccurs="0"/>
      <xsd:element name="compressionFormat" type="xsd:string" minOccurs="0"/>
      <xsd:element name="mimeType" type="xsd:string" minOccurs="0"/>
    </xsd:all>
  </xsd:complexType>
 
  <xsd:element name="ordImageAttributes" type="ordImageAttributesType"/>
</xsd:schema>

F.4 XML Schema for XMP Metadata

This schema is the content model for XMP metadata retrieved from images. It is also the content model for writing metadata to images. The namespace for this schema is http://xmlns.oracle.com/ord/meta/xmp.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2004, 2005, Oracle.  All rights reserved. -->
<xsd:schema xmlns="http://xmlns.oracle.com/ord/meta/xmp" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:xdb="http://xmlns.oracle.com/xdb"
     targetNamespace="http://xmlns.oracle.com/ord/meta/xmp" 
     elementFormDefault="qualified"  
     attributeFormDefault="unqualified">
 
  <xsd:annotation>
    <xsd:documentation>
    
      Introduction
       This is the Oracle Multimedia schema for metadata embedded in XMP packets.
        The schema provides for a single element from the RDF namespace.
        As defined in the January 2004 version of the XMP specification, 
        this element should be an rdf:RDF element. 
        XMP is defined by Adobe Systems Incorporated. For more information
        about XMP, see the XMP Specification at the Adobe Web site.
    </xsd:documentation>
  </xsd:annotation>
 
  <xsd:complexType name="xmpMetadataType" mixed="false">
    <xsd:sequence>
      <xsd:any namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
           xdb:SQLType="CLOB"
           processContents="skip" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="xmpMetadata" type="xmpMetadataType"/>
</xsd:schema>