Skip Headers
Oracle® interMedia Reference
10g Release 2 (10.2)

Part Number B14297-01
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Master Index
Master Index
Go to Feedback page
Feedback

Go to previous page
Previous
Go to next page
Next
View PDF

F Metadata Schemas

This appendix describes the XML schemas used by the metadata methods of the ORDImage object type. These schemas are registered in Oracle Database when Oracle interMedia ("interMedia") is installed. The schemas may be examined by querying the dictionary view ALL_XML_SCHEMAS. The schemas are also available as files located in the ord/xml/xsd directory under <ORACLE_HOME>.

The following XML schemas are described in this appendix:

For additional information about XML schemas, see the World Wide Web Consortium Web site at

http://www.w3.org/XML/Schema

See Oracle interMedia User's Guide for more information about the Metadata and DICOM features.

F.1 XML Schema for DICOM Metadata

This schema is the content model for Digital Imaging and Communications in Medicine (DICOM) metadata retrieved from images. The namespace for this schema is http://xmlns.oracle.com/ord/meta/dicomImage.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://xmlns.oracle.com/ord/meta/dicomImage" targetNamespace="http://xmlns.oracle.com/ord/meta/dicomImage"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
 
<xs:annotation>
  <xs:documentation>
 
    Introduction
      This schema defines the set of DICOM metadata published by Oracle interMedia 
      ORDImage function getDicomMetadata().

      The purpose of this set of functions is to extract from a DICOM image a set
      of attributes to describe the image in XML, allowing easy browsing and
      retrieval.
    
      Question mark "?" means optional items
 
    Structure Overview
      DICOM_IMAGE
        ORD_DICOM_HEADER
          VERSION
          DICOM_STANDARD_VERSION
          DICOM_STANDARD_RELEASE
        FILE_META_HEADER
          MEDIA_STORAGE_SOP_CLASS_UID
          MEDIA_STORAGE_SOP_INSTANCE_UID
          TRANSFER_SYNTAX_UID
          IMPLEMENTATION_CLASS_UID
          IMPLEMENTATION_VERSION_NAME
          SOURCE_APPLICATION_ENTITY_TITLE
        PATIENT
          NAME
          ID
          BIRTH_DATE
          SEX
        GENERAL_STUDY
          INSTANCE_UID
          DATE
          TIME
          REFERING_PHYSICIANS_NAME
          ID
          ACCESSION_NUMBER
          DESCRIPTION?
        PATIENT_STUDY?
          ADMITTING_DIAGNOSES_DESCRIPTION
          ADMITTING_DIAGNOSES_CODE_SEQUENCE
        GENERAL_SERIES
          MODALITY
          INSTANCE_UID
          DATE
          TIME
          PERFORMING_PHYSICIANS_NAME
          BODY_PART_EXAMINED
          PATIENT_POSITION
          PERFORMED_PROCEDURE_STEP_ID
          PERFORMED_PROCEDURE_STEP_START_DATE
          PERFORMED_PROCEDURE_STEP_START_TIME
          PERFORMED_PROCEDURE_STEP_DESCRIPTION
          PERFORMED_PROTOCOL_CODE_SEQUENCE
        GENERAL_EQUIPMENT?
          MANUFACTURER
        GENERAL_IMAGE?
          INSTANCE_NUMBER
          ACQUISITION_NUMBER
          ACQUISITION_DATE
          ACQUISITION_TIME
          ACQUISITION_DATETIME
          PATIENT_ORIENTATION
          FRAME_LATERALITY
          ANATOMIC_REGION
        IMAGE_PIXEL?
          SAMPLES_PER_PIXEL
          PHOTOMETRIC_INTERPRETATION
          ROWS
          COLUMNS
          BIT_ALLOCATED
          BIT_STORED
          HIGH_BIT
          PIXEL_REPRESENTATION
                PLANAR_CONFIGURATION
          PIXEL_ASPECT_RATIO
 
        SOP_COMMON
          CLASS_UID
          INSTANCE_UID                                          
          SPECIFIC_CHARACTER_SET
 
    List of DICOM attribute tags appeared in this schema
      (0002, 0002)  MEDIA_STORAGE_SOP_CLASS_UID
      (0002, 0003)  MEDIA_STORAGE_SOP_INSTANCE_UID
      (0002, 0010)  TRANSFER_SYNTAX_UID
      (0002, 0012)  IMPLEMENTATION_CLASS_UID
      (0002, 0013)  IMPLEMENTATION_VERSION_NAME
      (0002, 0016)  SOURCE_APPLICATION_ENTITY_TITLE
 
 
      (0008, 0005)  SPECIFIC_CHARACTER_SET
      (0008, 0016)  SOP CLASS_UID
      (0008, 0018)  SOP INSTANCE_UID
      (0008, 0020)  STUDY DATE
      (0008, 0021)  SERIES DATE
      (0008, 0022)  ACQUISITION_DATE
      (0008, 002A)  ACQUISITION_DATETIME
      (0008, 0030)  STUDY TIME
      (0008, 0031)  SERIES TIME
      (0008, 0032)  ACQUISITION_TIME
      (0008, 0050)  ACCESSION_NUMBER
      (0008, 0060)  MODALITY
      (0008, 0070)  MANUFACTURER
      (0008, 0090)  REFERING_PHYSICIANS_NAME
      (0008, 1030)  STUDY DESCRIPTION
      (0008, 1050)  PERFORMING_PHYSICIANS_NAME
      (0008, 1080)  ADMITTING_DIAGNOSES_DESCRIPTION
      (0008, 1084)  ADMITTING_DIAGNOSES_CODE_SEQUENCE
      (0008, 2218)  ANATOMIC_REGION
 
      (0010, 0010)  PATIENT NAME
      (0010, 0020)  PATIENT ID
      (0010, 0030)  PATIENT BIRTH_DATE
      (0010, 0040)  PATIENT SEX
 
      (0018, 0015)  BODY_PART_EXAMINED
      (0018, 5100)  PATIENT_POSITION
    
      (0020, 000D)  STUDY INSTANCE_UID
      (0020, 000E)  SERIES INSTANCE_UID
      (0020, 0010)  STUDY ID
      (0020, 0012)  ACQUISITION_NUMBER
      (0020, 0013)  INSTANCE_NUMBER
      (0020, 0020)  PATIENT_ORIENTATION
      (0020, 9072)  FRAME_LATERALITY
 
      (0028, 0002)  SAMPLES_PER_PIXEL
      (0028, 0004)  PHOTOMETRIC_INTERPRETATION
      (0028, 0006)  PLANAR_CONFIGURATION
      (0028, 0010)  ROWS
      (0028, 0011)  COLUMNS
      (0028, 0034)  PIXEL_ASPECT_RATIO
      (0028, 0100)  BIT_ALLOCATED
      (0028, 0101)  BIT_STORED
      (0028, 0102)  HIGH_BIT
      (0028, 0103)  PIXEL_REPRESENTATION
 
      (0040, 0244)  PERFORMED_PROCEDURE_STEP_START_DATE
      (0040, 0245)  PERFORMED_PROCEDURE_STEP_START_TIME
      (0040, 0253)  PERFORMED_PROCEDURE_STEP_ID
      (0040, 0254)  PERFORMED_PROCEDURE_STEP_DESCRIPTION
      (0040, 0260)  PERFORMED_PROTOCOL_CODE_SEQUENCE
 
        
  </xs:documentation>
</xs:annotation>
 
 
<xs:element name="DICOM_IMAGE">
  <xs:complexType>
  <xs:sequence>
    <xs:element name="ORD_DICOM_HEADER">
       <xs:complexType>
      <xs:sequence>
        <!-- XML document version number is "1.0" for database release 10gR2 -->
        <xs:element name="VERSION" type="SH"/>
        <!-- DICOM standard version this XML document is based on, for database 10gR2, it is "3"  -->
        <xs:element name="DICOM_STANDARD_VERSION" type="SH"/>
        <!-- DICOM standard release this XML document is based on, for database 10gR2, it is "2003"  -->
        <xs:element name="DICOM_STANDARD_RELEASE" type="SH"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
    <xs:element name="FILE_META_HEADER">
       <xs:complexType>
      <xs:sequence>
        <!-- (0002, 0002), mandatory-->
        <xs:element name="MEDIA_STORAGE_SOP_CLASS_UID" type="UI"/>
        <!-- (0002, 0003), mandatory -->
        <xs:element name="MEDIA_STORAGE_SOP_INSTANCE_UID" type="UI"/>
        <!-- (0002, 0010), mandatory -->
        <xs:element name="TRANSFER_SYNTAX_UID" type="UI"/>
        <!-- (0002, 0012), mandatory -->
        <xs:element name="IMPLEMENTATION_CLASS_UID" type="UI"/>
        <!-- (0002, 0013), nullable -->
        <xs:element name="IMPLEMENTATION_VERSION_NAME" type="SH" minOccurs="0" nillable="true"/>
        <!-- (0002, 0016), nullable -->
        <xs:element name="SOURCE_APPLICATION_ENTITY_TITLE" type="AE" minOccurs="0" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
    <xs:element name="PATIENT" minOccurs="0">
       <xs:complexType>
      <xs:sequence>
        <!-- (0010, 0010), nullable -->
        <xs:element name="NAME" type="PN" minOccurs="0" nillable="true"/>
        <!-- (0010, 0020), nullable -->
        <xs:element name="ID" type="LO" minOccurs="0" nillable="true"/>
        <!-- (0010, 0030), nullable -->
        <xs:element name="BIRTH_DATE" type="DA" minOccurs="0" nillable="true"/>
        <!-- (0010, 0040), nullable -->
        <xs:element name="SEX" type="CS" minOccurs="0" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
    <xs:element name="GENERAL_STUDY">
       <xs:complexType>
      <xs:sequence>
        <!-- (0020, 000D) mandatory -->
        <xs:element name="INSTANCE_UID" type="UI"/>
        <!-- (0008, 0020), nullable -->
        <xs:element name="DATE" type="DA" minOccurs="0" nillable="true"/>
        <!-- (0008, 0030), nullable -->
        <xs:element name="TIME" type="TM" minOccurs="0" nillable="true"/>
        <!-- (0008, 0090), nullable -->
        <xs:element name="REFERING_PHYSICIANS_NAME" type="PN" minOccurs="0" nillable="true"/>
        <!-- (0020, 0010), nullable -->
        <xs:element name="ID" type="SH" minOccurs="0" nillable="true"/>
        <!-- (0008, 0050), nullable -->
        <xs:element name="ACCESSION_NUMBER" type="SH" minOccurs="0" nillable="true"/>
        <!-- (0008, 1030) optional -->
        <xs:element name="DESCRIPTION" type="LO" minOccurs="0" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
    <xs:element name="PATIENT_STUDY" minOccurs="0">
       <xs:complexType>
      <xs:sequence>
        <!-- (0008, 1080), optional -->
        <xs:element name="ADMITTING_DIAGNOSES_DESCRIPTION" type="LO" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
        <!-- (0008, 1084), optional -->
        <xs:element name="ADMITTING_DIAGNOSES_CODE_SEQUENCE" type="CODE_SQ" minOccurs="0" nillable="true"/>
 
      </xs:sequence>
       </xs:complexType>
    </xs:element>
 
 
    <xs:element name="GENERAL_SERIES">
       <xs:complexType>
      <xs:sequence>
        <!-- (0008, 0060), mandatory -->
        <xs:element name="MODALITY" type="CS"/>
        <!-- (0020, 000E), mandatory -->
        <xs:element name="INSTANCE_UID" type="UI"/>
        <!-- (0008, 0021), optional -->
        <xs:element name="DATE" type="DA" minOccurs="0" nillable="true"/>
        <!-- (0008, 0031), optional -->
        <xs:element name="TIME" type="TM" minOccurs="0" nillable="true"/>
        <!-- (0008, 1050), optional -->
        <xs:element name="PERFORMING_PHYSICIANS_NAME" type="PN" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
        <!-- (0018, 0015), optional -->
        <!-- Note will not replace with modality specific values -->
        <xs:element name="BODY_PART_EXAMINED" type="CS" minOccurs="0" nillable="true"/>
        <!-- (0018, 5100), conditional -->
        <xs:element name="PATIENT_POSITION" type="CS" minOccurs="0" nillable="true"/>
        <!-- (0040, 0253), optional -->
        <xs:element name="PERFORMED_PROCEDURE_STEP_ID" type="SH" minOccurs="0" nillable="true"/>
        <!-- (0040, 0244), optional -->
        <xs:element name="PERFORMED_PROCEDURE_STEP_START_DATE" type="DA" minOccurs="0" nillable="true"/>
        <!-- (0040, 0245), optional -->
        <xs:element name="PERFORMED_PROCEDURE_STEP_START_TIME" type="TM" minOccurs="0" nillable="true"/>
        <!-- (0040, 0254), optional -->
        <xs:element name="PERFORMED_PROCEDURE_STEP_DESCRIPTION" type="LO" minOccurs="0" nillable="true"/>
        <!-- (0040, 0260), optional -->
        <xs:element name="PERFORMED_PROTOCOL_CODE_SEQUENCE" type="CODE_SQ" minOccurs="0" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
 
    <xs:element name="GENERAL_EQUIPMENT" minOccurs="0">
       <xs:complexType>
      <xs:sequence>
        <!-- (0008, 0070), nullable -->
        <xs:element name="MANUFACTURER" type="LO" minOccurs="0" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
 
    <xs:element name="GENERAL_IMAGE" minOccurs="0">
       <xs:complexType>
      <xs:sequence>
        <!-- (0020, 0013), nullable -->
        <xs:element name="INSTANCE_NUMBER" type="IS" minOccurs="0" nillable="true"/>
        <!-- (0020, 0012), optional -->
        <xs:element name="ACQUISITION_NUMBER" type="IS" minOccurs="0" nillable="true"/>
        <!-- (0008, 0022), optional -->
        <xs:element name="ACQUISITION_DATE" type="DA" minOccurs="0" nillable="true"/>
        <!-- (0008, 0032), optional -->
        <xs:element name="ACQUISITION_TIME" type="TM" minOccurs="0" nillable="true"/>
        <!-- (0008, 002A), optional -->
        <xs:element name="ACQUISITION_DATETIME" type="DT" minOccurs="0" nillable="true"/>
        <!-- (0020, 0020), conditional -->
        <xs:element name="PATIENT_ORIENTATION" type="CS" minOccurs="0" maxOccurs="2" nillable="true"/>
        <!-- (0020, 9072) conditional-->
        <xs:element name="FRAME_LATERALITY" type="CS" minOccurs="0" nillable="true"/>
        <!-- (0008, 2218) Frame anatomy macro, conditional -->
        <xs:element name="ANATOMIC_REGION" type="CODE_SQ" minOccurs="0" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
 
    <xs:element name="IMAGE_PIXEL" minOccurs="0">
       <xs:complexType>
      <xs:sequence>
        <!-- (0028, 0002), mandatory -->
        <xs:element name="SAMPLES_PER_PIXEL" type="US" />
        <!-- (0028, 0004), mandatory -->
        <xs:element name="PHOTOMETRIC_INTERPRETATION" type="CS" />
        <!-- (0028, 0010), mandatory -->
        <xs:element name="ROWS" type="US" />
        <!-- (0028, 0011), mandatory -->
        <xs:element name="COLUMNS" type="US" />
        <!-- (0028, 0100), mandatory -->
        <xs:element name="BIT_ALLOCATED" type="US" />
        <!-- (0028, 0101), mandatory -->
        <xs:element name="BIT_STORED" type="US" />
        <!-- (0028, 0102), mandatory -->
        <xs:element name="HIGH_BIT" type="US" />
        <!-- (0028, 0103), mandatory -->
        <xs:element name="PIXEL_REPRESENTATION" type="US" />
        <!-- (7FE0, 0010) PIXEL_DATA, not included -->
        <!-- (0028, 0006), conditional -->
        <xs:element name="PLANAR_CONFIGURATION" type="US" minOccurs="0" nillable="true" />
        <!-- (0028, 0034), conditional -->
        <xs:element name="PIXEL_ASPECT_RATIO" type="IS" minOccurs="0" maxOccurs="2" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
 
    <xs:element name="SOP_COMMON">
       <xs:complexType>
      <xs:sequence>
        <!-- (0008, 0016), mandatory -->
        <xs:element name="CLASS_UID" type="UI"/>
        <!-- (0008, 0018), mandatory -->
        <xs:element name="INSTANCE_UID" type="UI"/>
        <!-- (0008, 0005) -->
        <xs:element name="SPECIFIC_CHARACTER_SET" type="CS" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
      </xs:sequence>
       </xs:complexType>
    </xs:element>
 
  </xs:sequence>
  </xs:complexType>
</xs:element>
 
 
<!-- Complex data type -->
<!-- code sequence -->
<xs:complexType name="CODE_SQ">
  <xs:sequence>
    <xs:element name="CODE_SEQUENCE" type="CODE_SEQUENCE" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
 
<xs:complexType name="CODE_SEQUENCE">
  <xs:sequence>
    <xs:element name="ITEM_NUMBER" type="xs:positiveInteger"/>
    <xs:element name="CODE_VALUE" type="xs:string"/>
    <xs:element name="CODING_SCHEME" type="xs:string"/>
    <xs:element name="CODING_SCHEME_VERSION" type="xs:string" minOccurs="0"/>
    <xs:element name="CODING_MEANING" type="xs:string" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>
 
 
 
 
<!-- Simple data types -->
<!-- Application Entity -->
<xs:simpleType name="AE">
  <xs:restriction base="xs:string">
    <xs:maxLength value="16"/>
  </xs:restriction>
</xs:simpleType>
 
<!-- Coded String -->
<xs:simpleType name="CS">
  <xs:restriction base="xs:token">
    <xs:maxLength value="16"/>
  </xs:restriction>
</xs:simpleType>
 
<!-- DAte -->
<xs:simpleType name="DA">
  <xs:restriction base="xs:date"/>
</xs:simpleType>
 
<!-- DateTime -->
<xs:simpleType name="DT">
  <xs:restriction base="xs:dateTime"/>
</xs:simpleType>
 
<!-- Integer String -->
<xs:simpleType name="IS">
  <xs:restriction base="xs:integer"/>
</xs:simpleType>
 
<!-- LOng string -->
<xs:simpleType name="LO">
  <xs:restriction base="xs:string">
    <xs:maxLength value="64"/>
  </xs:restriction>
</xs:simpleType>
 
<!-- Person Name -->
<xs:simpleType name="PN">
  <xs:restriction base="xs:token">
    <xs:maxLength value="64"/>
  </xs:restriction>
</xs:simpleType>
 
<!-- SHort String -->
<xs:simpleType name="SH">
  <xs:restriction base="xs:string">
    <xs:maxLength value="16"/>
  </xs:restriction>
</xs:simpleType>
 
<!-- Short String -->
<xs:simpleType name="SS">
  <xs:restriction base="xs:short"/>
</xs:simpleType>
 
<!-- TiMe -->
<xs:simpleType name="TM">
  <xs:restriction base="xs:time"/>
</xs:simpleType>
 
<!-- UId -->
<xs:simpleType name="UI">
  <xs:restriction base="xs:token">
    <xs:maxLength value="64"/>
    <xs:pattern value='([0-9]+\.)*[0-9]+'/>
  </xs:restriction>
</xs:simpleType>
 
 
<!-- Unsigned Short -->
<xs:simpleType name="US">
  <xs:restriction base="xs:unsignedShort"/>
</xs:simpleType>
 
 
</xs:schema>

F.2 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, 2005, Oracle.  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 interMedia 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 interMedia does not 
        read from image files. Note that this schema does define data 
        models for these tags and future versions of Oracle
        interMedia 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 datasource  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 Resolution Unit</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"/>
              <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.3 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, 2005, 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 interMedia 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" 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.4 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 interMedia 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.5 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 interMedia 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 website.
    </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>