Bug #622
Exiv2 doesn't parse MicrosoftPhoto schema prefix correctly.
100%
Description
Exiv2 does not correctly parse the MicrosoftPhoto schema prefix from an XMP packet created with with Nikon Capture NX2, which uses "Public XMP Toolkit Core 3.5".
Exiv2 changes MicrosoftPhoto
to MicrosoftPhoto_1_
and even MicrosoftPhoto_1__1_
.
However, if the XMP packet is created from scratch with Exiv2, all is fine.
(Reported by Gilles Caulier / Sylvain CROUZILLAT)
ahuggel@kelana> ./exiv2 -px 2stars.jpg Xmp.xmp.Rating XmpText 1 2 Xmp.MicrosoftPhoto_1_.Rating XmpText 2 25 Xmp.dc.description LangAlt 1 lang="x-default" (c) Sylvain.CROUZILLAT@CROUCROU.COM Xmp.dc.subject XmpBag 1 Mariage Xmp.photoshop.DateCreated XmpText 10 2008-12-12 ahuggel@kelana> ./exiv2 -ex 2stars.jpg ahuggel@kelana> cat 2stars.exv # output slightly edited <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xap="http://ns.adobe.com/xap/1.0/" xmlns:MicrosoftPhoto_1__1_="http://ns.microsoft.com/photo/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xap:Rating="2" MicrosoftPhoto_1__1_:Rating="25" photoshop:DateCreated="2008-12-12"> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">(c) Sylvain.CROUZILLAT@CROUCROU.COM </rdf:li> </rdf:Alt> </dc:description> <dc:subject> <rdf:Bag> <rdf:li>Mariage</rdf:li> </rdf:Bag> </dc:subject> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?> ahuggel@kelana> xmpdump 2starts.jpg ahuggel@kelana> cat 2starts.jpg.xml <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Public XMP Toolkit Core 3.5"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xap="http://ns.adobe.com/xap/1.0/"> <xap:Rating>2</xap:Rating> </rdf:Description> <rdf:Description rdf:about="" xmlns:MicrosoftPhoto="http://ns.microsoft.com/photo/1.0"> <MicrosoftPhoto:Rating>25</MicrosoftPhoto:Rating> </rdf:Description> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">(c) Sylvain.CROUZILLAT@CROUCROU.COM </rdf:li> </rdf:Alt> </dc:description> <dc:subject> <rdf:Bag> <rdf:li>Mariage</rdf:li> </rdf:Bag> </dc:subject> </rdf:Description> <rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> <photoshop:DateCreated>2008-12-12</photoshop:DateCreated> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?>
If the XMP packet is created with Exiv2, all is fine:
ahuggel@kelana> cat e.cmd set Xmp.xmp.Rating 2 set Xmp.MicrosoftPhoto.Rating 25 set Xmp.dc.description lang="x-default" (c) Sylvain.CROUZILLAT@CROUCROU.COM set Xmp.dc.subject Mariage set Xmp.photoshop.DateCreated 2008-12-12 ahuggel@kelana> ./exiv2 -v -m e.cmd e.jpg File 1/1: e.jpg Set Xmp.xmp.Rating "2" (XmpText) Set Xmp.MicrosoftPhoto.Rating "25" (XmpText) Set Xmp.dc.description "lang="x-default" (c) Sylvain.CROUZILLAT@CROUCROU.COM" (LangAlt) Set Xmp.dc.subject "Mariage" (XmpBag) Set Xmp.photoshop.DateCreated "2008-12-12" (XmpText) ahuggel@kelana> ./exiv2 -px e.jpg Xmp.xmp.Rating XmpText 1 2 Xmp.MicrosoftPhoto.Rating XmpText 2 25 Xmp.photoshop.DateCreated XmpText 10 2008-12-12 Xmp.dc.description LangAlt 1 lang="x-default" (c) Sylvain.CROUZILLAT@CROUCROU.COM Xmp.dc.subject XmpBag 1 Mariage ahuggel@kelana> xmpdump e.jpg ahuggel@kelana> cat e.jpg.xml <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xap="http://ns.adobe.com/xap/1.0/" xmlns:MicrosoftPhoto="http://ns.microsoft.com/Photo/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xap:Rating="2" MicrosoftPhoto:Rating="25" photoshop:DateCreated="2008-12-12"> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">(c) Sylvain.CROUZILLAT@CROUCROU.COM</rdf:li> </rdf:Alt> </dc:description> <dc:subject> <rdf:Bag> <rdf:li>Mariage</rdf:li> </rdf:Bag> </dc:subject> </rdf:Description> </rdf:RDF> </x:xmpmeta><?xpacket end="w"?>
Associated revisions
#622: Fixed the same typo in the doc too.
History
Updated by Andreas Huggel over 12 years ago
This seems to be an incompatibility between "Public XMP Toolkit Core 3.5" used by Nikon Capture NX2 and the XMPSDK used by Exiv2. It looks like something is going wrong deep inside XMPSDK.
Next steps:- Check if the problem can be reproduced with XMPSDK alone
- If so, check if the latest version of XMPSDK fixes the problem, if it doesn't, report as a bug for XMPSDK (Adobe)
Updated by Andreas Huggel over 12 years ago
Gilles,
The problem is very simple. Look at the namespace URIs: Nikon Capture NX2 uses http://ns.microsoft.com/photo/1.0 (*p*hoto), but Exiv2 has http://ns.microsoft.com/Photo/1.0/ (*P*hoto). If I make it lowercase in Exiv2, it works with the samples. But which URI is correct??
Andreas
Updated by Gilles Caulier over 12 years ago
Andreas Huggel wrote:
Gilles,
The problem is very simple. Look at the namespace URIs: Nikon Capture NX2 uses http://ns.microsoft.com/photo/1.0 (*p*hoto), but Exiv2 has http://ns.microsoft.com/Photo/1.0/ (*P*hoto). If I make it lowercase in Exiv2, it works with the samples. But which URI is correct??
Andreas
Andreas,
In last Exiftool, Microsoft XMP namespaces are :
MicrosoftPhoto => 'http://ns.microsoft.com/photo/1.0',
MP => 'http://ns.microsoft.com/photo/1.2/',
MPRI => 'http://ns.microsoft.com/photo/1.2/t/RegionInfo#',
MPReg => 'http://ns.microsoft.com/photo/1.2/t/Region#',
For NX i cannot any reference...
Gilles Caulier
Updated by Andreas Huggel over 12 years ago
- Status changed from New to Resolved
- Target version set to 0.18.1
- % Done changed from 0 to 100
#622: Fixed MicrosoftPhoto URI in call to RegisterNamespace.