Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Extract XMP MetaData as XML

See more XMP Examples

Demonstrates how to open a JPG or TIF image file and extract the XMP metadata as XML.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Xmp,
  Chilkat.Xml;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  xmp: TXmp;
  xml: TXml;
  rdf_Description_rdf_about: string;
  rdf_Description_xmlns_xmpPLUS: string;
  rdf_Description_xmlns_Iptc4xmpCore: string;
  rdf_Description_xmlns_exif: string;
  rdf_Description_xmlns_pdf: string;
  rdf_Description_xmlns_photoshop: string;
  rdf_Description_xmlns_tiff: string;
  rdf_Description_xmlns_xap: string;
  rdf_Description_xmlns_stRef: string;
  rdf_Description_xmlns_xapMM: string;
  rdf_Description_xmlns_xapRights: string;
  rdf_Description_xmlns_dc: string;
  xmpPLUS_CreditLineReq: string;
  xmpPLUS_ReuseAllowed: string;
  Iptc4xmpCore_IntellectualGenre: string;
  Iptc4xmpCore_Location: string;
  Iptc4xmpCore_CountryCode: string;
  Iptc4xmpCore_CreatorContactInfo_rdf_parseType: string;
  Iptc4xmpCore_CiAdrExtadr: string;
  Iptc4xmpCore_CiAdrCity: string;
  Iptc4xmpCore_CiAdrRegion: string;
  Iptc4xmpCore_CiAdrPcode: Integer;
  Iptc4xmpCore_CiAdrCtry: string;
  Iptc4xmpCore_CiTelWork: string;
  Iptc4xmpCore_CiEmailWork: string;
  Iptc4xmpCore_CiUrlWork: string;
  rdf_li: Integer;
  exif_ColorSpace: Integer;
  exif_PixelXDimension: Integer;
  exif_PixelYDimension: Integer;
  photoshop_AuthorsPosition: string;
  photoshop_Headline: string;
  photoshop_CaptionWriter: string;
  photoshop_DateCreated: string;
  photoshop_City: string;
  photoshop_State: string;
  photoshop_Country: string;
  photoshop_TransmissionReference: string;
  photoshop_Instructions: string;
  photoshop_Credit: string;
  photoshop_Source: string;
  tiff_XResolution: string;
  tiff_YResolution: string;
  tiff_ResolutionUnit: Integer;
  tiff_Orientation: Integer;
  xap_CreateDate: string;
  xap_ModifyDate: string;
  xap_MetadataDate: string;
  xap_CreatorTool: string;
  xapMM_DerivedFrom_rdf_parseType: string;
  stRef_instanceID: string;
  stRef_documentID: string;
  xapMM_DocumentID: string;
  xapRights_Marked: string;
  xapRights_WebStatement: string;
  rdf_li_xml_lang: string;
  strRdf_li: string;
  dc_format: string;
  j: Integer;
  count_j: Integer;
  x_xmpmeta_xmlns_x: string;
  x_xmpmeta_x_xmptk: string;
  rdf_RDF_xmlns_rdf: string;
  rdf_RDF_xmlns_iX: string;
  i: Integer;
  count_i: Integer;

begin
  success := False;

  //  This requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  xmp := TXmp.Create;

  //  Load a JPG or TIF image file.
  //  Sample JPG's with XMP metadata may be found at:
  //  https://www.chilkatsoft.com/testData/xmp/sample1.jpg
  //  https://www.chilkatsoft.com/testData/xmp/sample2.jpg
  //  https://www.chilkatsoft.com/testData/xmp/sample3.jpg
  success := xmp.LoadAppFile('qa_data/xmp/sample1.jpg');
  if (success <> True) then
    begin
      WriteLn(xmp.LastErrorText);
      Exit;
    end;

  WriteLn('Num embedded XMP docs: ' + xmp.NumEmbedded);

  //  Assuming there is at least one, get the 1st.
  //  (There is typically never more than one, but theoretically it's possible.)
  xml := xmp.GetEmbedded(0);
  if (xmp.LastMethodSuccess = False) then
    begin
      WriteLn('No XMP metadata found.');
      Exit;
    end;

  WriteLn(xml.GetXml());

  //  Sample output:

  //  <?xml version="1.0" encoding="utf-8"?>
  //  <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP toolkit 3.0-28, framework 1.6">
  //      <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:iX="http://ns.adobe.com/iX/1.0/">
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xmpPLUS="XMP Photographic Licensing Universal System (xmpPLUS, http://ns.adobe.com/xap/1.0/PLUS/)">
  //              <xmpPLUS:CreditLineReq>False</xmpPLUS:CreditLineReq>
  //              <xmpPLUS:ReuseAllowed>False</xmpPLUS:ReuseAllowed>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">
  //              <Iptc4xmpCore:IntellectualGenre>Profile</Iptc4xmpCore:IntellectualGenre>
  //              <Iptc4xmpCore:Location>Lake Superior</Iptc4xmpCore:Location>
  //              <Iptc4xmpCore:CountryCode>US</Iptc4xmpCore:CountryCode>
  //              <Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
  //                  <Iptc4xmpCore:CiAdrExtadr>John Doe Photography, 123 Maple Lane</Iptc4xmpCore:CiAdrExtadr>
  //                  <Iptc4xmpCore:CiAdrCity>Champaign</Iptc4xmpCore:CiAdrCity>
  //                  <Iptc4xmpCore:CiAdrRegion>Illinois</Iptc4xmpCore:CiAdrRegion>
  //                  <Iptc4xmpCore:CiAdrPcode>61820</Iptc4xmpCore:CiAdrPcode>
  //                  <Iptc4xmpCore:CiAdrCtry>USA</Iptc4xmpCore:CiAdrCtry>
  //                  <Iptc4xmpCore:CiTelWork>+1 (217) 1234567</Iptc4xmpCore:CiTelWork>
  //                  <Iptc4xmpCore:CiEmailWork>john@doe.com</Iptc4xmpCore:CiEmailWork>
  //                  <Iptc4xmpCore:CiUrlWork>www.doe.com</Iptc4xmpCore:CiUrlWork>
  //              </Iptc4xmpCore:CreatorContactInfo>
  //              <Iptc4xmpCore:SubjectCode>
  //                  <rdf:Bag>
  //                      <rdf:li>14024001</rdf:li>
  //                  </rdf:Bag>
  //              </Iptc4xmpCore:SubjectCode>
  //              <Iptc4xmpCore:Scene>
  //                  <rdf:Bag>
  //                      <rdf:li>012300</rdf:li>
  //                  </rdf:Bag>
  //              </Iptc4xmpCore:Scene>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:exif="http://ns.adobe.com/exif/1.0/">
  //              <exif:ColorSpace>1</exif:ColorSpace>
  //              <exif:PixelXDimension>288</exif:PixelXDimension>
  //              <exif:PixelYDimension>432</exif:PixelYDimension>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"/>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
  //              <photoshop:AuthorsPosition>Photographer</photoshop:AuthorsPosition>
  //              <photoshop:Headline>Young boy yelling</photoshop:Headline>
  //              <photoshop:CaptionWriter>John Doe</photoshop:CaptionWriter>
  //              <photoshop:DateCreated>2004-08-19</photoshop:DateCreated>
  //              <photoshop:City>Marquette</photoshop:City>
  //              <photoshop:State>Michigan</photoshop:State>
  //              <photoshop:Country>United States</photoshop:Country>
  //              <photoshop:TransmissionReference>PO 34567</photoshop:TransmissionReference>
  //              <photoshop:Instructions>Original RAW capture Nikon D2X, Adobe RGB 1998.</photoshop:Instructions>
  //              <photoshop:Credit>John Doe Photography</photoshop:Credit>
  //              <photoshop:Source>John Doe Photography</photoshop:Source>
  //              <photoshop:History/>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
  //              <tiff:XResolution>72/1</tiff:XResolution>
  //              <tiff:YResolution>72/1</tiff:YResolution>
  //              <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
  //              <tiff:Orientation>1</tiff:Orientation>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xap="http://ns.adobe.com/xap/1.0/">
  //              <xap:CreateDate>2005-03-13T02:02:29-06:00</xap:CreateDate>
  //              <xap:ModifyDate>2005-03-13T02:02:29-06:00</xap:ModifyDate>
  //              <xap:MetadataDate>2005-03-13T02:02:29-06:00</xap:MetadataDate>
  //              <xap:CreatorTool>Adobe Photoshop CS Windows</xap:CreatorTool>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/">
  //              <xapMM:DerivedFrom rdf:parseType="Resource">
  //                  <stRef:instanceID>uuid:f5b64171-9394-11d9-bb8e-a67e6693b6e9</stRef:instanceID>
  //                  <stRef:documentID>adobe:docid:photoshop:e4d002a4-9392-11d9-bb8e-a67e6693b6e9</stRef:documentID>
  //              </xapMM:DerivedFrom>
  //              <xapMM:DocumentID>adobe:docid:photoshop:0f410647-9396-11d9-bb8e-a67e6693b6e9</xapMM:DocumentID>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xapRights="http://ns.adobe.com/xap/1.0/rights/">
  //              <xapRights:Marked>True</xapRights:Marked>
  //              <xapRights:WebStatement>http://www.doe.com</xapRights:WebStatement>
  //              <xapRights:RightsUsageTerms>
  //                  <rdf:Alt>
  //                      <rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li>
  //                  </rdf:Alt>
  //              </xapRights:RightsUsageTerms>
  //              <xapRights:UsageTerms>
  //                  <rdf:Alt>
  //                      <rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li>
  //                  </rdf:Alt>
  //              </xapRights:UsageTerms>
  //          </rdf:Description>
  //          <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:dc="http://purl.org/dc/elements/1.1/">
  //              <dc:format>image/jpeg</dc:format>
  //              <dc:description>
  //                  <rdf:Alt>
  //                      <rdf:li xml:lang="x-default">Three year old African American boy yells with joy on beach during vacation.</rdf:li>
  //                  </rdf:Alt>
  //              </dc:description>
  //              <dc:title>
  //                  <rdf:Alt>
  //                      <rdf:li xml:lang="x-default">20040819_pe_014578d.nef</rdf:li>
  //                  </rdf:Alt>
  //              </dc:title>
  //              <dc:rights>
  //                  <rdf:Alt>
  //                      <rdf:li xml:lang="x-default">�2004 John Doe, all rights reserved</rdf:li>
  //                  </rdf:Alt>
  //              </dc:rights>
  //              <dc:creator>
  //                  <rdf:Seq>
  //                      <rdf:li>John Doe</rdf:li>
  //                  </rdf:Seq>
  //              </dc:creator>
  //              <dc:subject>
  //                  <rdf:Bag>
  //                      <rdf:li>boy</rdf:li>
  //                      <rdf:li>gender</rdf:li>
  //                      <rdf:li>human beings</rdf:li>
  //                      <rdf:li>humans</rdf:li>
  //                      <rdf:li>lad</rdf:li>
  //                      <rdf:li>male</rdf:li>
  //                      <rdf:li>people</rdf:li>
  //                      <rdf:li>3-12 years old</rdf:li>
  //                      <rdf:li>age</rdf:li>
  //                      <rdf:li>child</rdf:li>
  //                      <rdf:li>youth</rdf:li>
  //                      <rdf:li>african american</rdf:li>
  //                      <rdf:li>african-american</rdf:li>
  //                      <rdf:li>black</rdf:li>
  //                      <rdf:li>ethnic</rdf:li>
  //                      <rdf:li>ethnicity</rdf:li>
  //                      <rdf:li>people of color</rdf:li>
  //                      <rdf:li>race</rdf:li>
  //                      <rdf:li>beach</rdf:li>
  //                      <rdf:li>nature</rdf:li>
  //                      <rdf:li>scenery</rdf:li>
  //                      <rdf:li>emotion</rdf:li>
  //                      <rdf:li>emotional</rdf:li>
  //                      <rdf:li>emotions</rdf:li>
  //                      <rdf:li>happiness</rdf:li>
  //                      <rdf:li>happy</rdf:li>
  //                      <rdf:li>joy</rdf:li>
  //                      <rdf:li>joyful</rdf:li>
  //                      <rdf:li>joyous</rdf:li>
  //                  </rdf:Bag>
  //              </dc:subject>
  //          </rdf:Description>
  //      </rdf:RDF>
  //  </x:xmpmeta>

  //  You can generate parsing code using Chilkat's online tool : 
  //  Generate Parsing Code from XML

  x_xmpmeta_xmlns_x := xml.GetAttrValue('xmlns:x');
  x_xmpmeta_x_xmptk := xml.GetAttrValue('x:xmptk');
  rdf_RDF_xmlns_rdf := xml.ChilkatPath('rdf:RDF|(xmlns:rdf)');
  rdf_RDF_xmlns_iX := xml.ChilkatPath('rdf:RDF|(xmlns:iX)');
  i := 0;
  count_i := xml.NumChildrenHavingTag('rdf:RDF|rdf:Description');
  while i < count_i do
    begin
      xml.I := i;
      rdf_Description_rdf_about := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(rdf:about)');
      rdf_Description_xmlns_xmpPLUS := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xmpPLUS)');
      rdf_Description_xmlns_Iptc4xmpCore := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:Iptc4xmpCore)');
      rdf_Description_xmlns_exif := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:exif)');
      rdf_Description_xmlns_pdf := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:pdf)');
      rdf_Description_xmlns_photoshop := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:photoshop)');
      rdf_Description_xmlns_tiff := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:tiff)');
      rdf_Description_xmlns_xap := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xap)');
      rdf_Description_xmlns_stRef := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:stRef)');
      rdf_Description_xmlns_xapMM := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xapMM)');
      rdf_Description_xmlns_xapRights := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:xapRights)');
      rdf_Description_xmlns_dc := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|(xmlns:dc)');
      xmpPLUS_CreditLineReq := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xmpPLUS:CreditLineReq');
      xmpPLUS_ReuseAllowed := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xmpPLUS:ReuseAllowed');
      Iptc4xmpCore_IntellectualGenre := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:IntellectualGenre');
      Iptc4xmpCore_Location := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:Location');
      Iptc4xmpCore_CountryCode := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CountryCode');
      Iptc4xmpCore_CreatorContactInfo_rdf_parseType := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|(rdf:parseType)');
      Iptc4xmpCore_CiAdrExtadr := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrExtadr');
      Iptc4xmpCore_CiAdrCity := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrCity');
      Iptc4xmpCore_CiAdrRegion := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrRegion');
      Iptc4xmpCore_CiAdrPcode := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrPcode');
      Iptc4xmpCore_CiAdrCtry := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrCtry');
      Iptc4xmpCore_CiTelWork := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiTelWork');
      Iptc4xmpCore_CiEmailWork := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiEmailWork');
      Iptc4xmpCore_CiUrlWork := xml.GetChildContent('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiUrlWork');
      rdf_li := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:SubjectCode|rdf:Bag|rdf:li');
      rdf_li := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|Iptc4xmpCore:Scene|rdf:Bag|rdf:li');
      exif_ColorSpace := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|exif:ColorSpace');
      exif_PixelXDimension := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|exif:PixelXDimension');
      exif_PixelYDimension := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|exif:PixelYDimension');
      photoshop_AuthorsPosition := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:AuthorsPosition');
      photoshop_Headline := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Headline');
      photoshop_CaptionWriter := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:CaptionWriter');
      photoshop_DateCreated := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:DateCreated');
      photoshop_City := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:City');
      photoshop_State := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:State');
      photoshop_Country := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Country');
      photoshop_TransmissionReference := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:TransmissionReference');
      photoshop_Instructions := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Instructions');
      photoshop_Credit := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Credit');
      photoshop_Source := xml.GetChildContent('rdf:RDF|rdf:Description[i]|photoshop:Source');
      tiff_XResolution := xml.GetChildContent('rdf:RDF|rdf:Description[i]|tiff:XResolution');
      tiff_YResolution := xml.GetChildContent('rdf:RDF|rdf:Description[i]|tiff:YResolution');
      tiff_ResolutionUnit := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|tiff:ResolutionUnit');
      tiff_Orientation := xml.GetChildIntValue('rdf:RDF|rdf:Description[i]|tiff:Orientation');
      xap_CreateDate := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xap:CreateDate');
      xap_ModifyDate := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xap:ModifyDate');
      xap_MetadataDate := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xap:MetadataDate');
      xap_CreatorTool := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xap:CreatorTool');
      xapMM_DerivedFrom_rdf_parseType := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|(rdf:parseType)');
      stRef_instanceID := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|stRef:instanceID');
      stRef_documentID := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|stRef:documentID');
      xapMM_DocumentID := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xapMM:DocumentID');
      xapRights_Marked := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:Marked');
      xapRights_WebStatement := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:WebStatement');
      rdf_li_xml_lang := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|xapRights:RightsUsageTerms|rdf:Alt|rdf:li|(xml:lang)');
      strRdf_li := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:RightsUsageTerms|rdf:Alt|rdf:li');
      rdf_li_xml_lang := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|xapRights:UsageTerms|rdf:Alt|rdf:li|(xml:lang)');
      strRdf_li := xml.GetChildContent('rdf:RDF|rdf:Description[i]|xapRights:UsageTerms|rdf:Alt|rdf:li');
      dc_format := xml.GetChildContent('rdf:RDF|rdf:Description[i]|dc:format');
      rdf_li_xml_lang := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|dc:description|rdf:Alt|rdf:li|(xml:lang)');
      strRdf_li := xml.GetChildContent('rdf:RDF|rdf:Description[i]|dc:description|rdf:Alt|rdf:li');
      rdf_li_xml_lang := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|dc:title|rdf:Alt|rdf:li|(xml:lang)');
      strRdf_li := xml.GetChildContent('rdf:RDF|rdf:Description[i]|dc:title|rdf:Alt|rdf:li');
      rdf_li_xml_lang := xml.ChilkatPath('rdf:RDF|rdf:Description[i]|dc:rights|rdf:Alt|rdf:li|(xml:lang)');
      strRdf_li := xml.GetChildContent('rdf:RDF|rdf:Description[i]|dc:rights|rdf:Alt|rdf:li');
      strRdf_li := xml.GetChildContent('rdf:RDF|rdf:Description[i]|dc:creator|rdf:Seq|rdf:li');
      j := 0;
      count_j := xml.NumChildrenHavingTag('rdf:RDF|rdf:Description[i]|dc:subject|rdf:Bag|rdf:li');
      while j < count_j do
        begin
          xml.J := j;
          strRdf_li := xml.GetChildContent('rdf:RDF|rdf:Description[i]|dc:subject|rdf:Bag|rdf:li[j]');
          j := j + 1;
        end;

      i := i + 1;
    end;

  xml.Free;


  xmp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.