Friday, December 15, 2017

#1 2016-04-16 01:28:54 pm

mac.jedi
Member
Registered: 2008-04-23
Posts: 43

Converting an Xpath shell query for Adobe Illustrator XMP file to ASOC

Hi All,

I have a shell script that I've used in an applescript app to collect the images and fonts in an Adobe Illustrator document. It's worked well, but now I'm trying to convert all the code in the app to ApplescriptObj-C and I'm having a difficult time converting my old xpath query to one using NSXMLDocument. I think I either need to add something to the ASOC code or my query syntax needs to change. 

I appreciate your help with this. 

Thanks!!!



Currently, I use the following code to parse the data and get the paths…

Applescript:


tell application "Adobe Illustrator"
   set docRef to document 1 -- sets docRef to current document
   set theData to XMP string of docRef -- gets XMP file from document
end tell

set oldDelims to AppleScript's text item delimiters -- save their current state
set AppleScript's text item delimiters to {","} -- declare new delimiters

-- get image list from xmp data
set imageList to every text item of (do shell script "echo " & quoted form of theData & " | /usr/bin/xpath '//stRef:filePath' | sed -e 's|<stRef:filePath>||g' -e 's|</stRef:filePath>|,|g' -e 's|,$||g'") as list

This is the return value … ran through Terminal…

Applescript:


$ cat /path/to/SimpleAiData.xmp | /usr/bin/xpath '//stRef:filePath'
Found 2 nodes:
-- NODE --
<stRef:filePath>/Users/johnappleseed/Documents/Projects/SimpleAiData/image.jpg</stRef:filePath>-- NODE --
<stRef:filePath>/Users/johnappleseed/Documents/Projects/SimpleAiData/image.jpg</stRef:filePath>

I've played with a few variations, but haven't been able to get any of them to work.
Here's the one from Everyday ApplescriptObjC…

Applescript:


use AppleScript version "2.4"
use framework "Foundation"
use scripting additions


set thePath to "/path/to/SimpleAiData.xmp"
set theQuery to "//stRef:filePath"
set theValue to my extractFrom:thePath matchingXPath:theQuery
-- returns > error "XQueryError:1 - \"can't resolve QName for \"stRef:filePath\"\" at line:1" number -2700 from «script» to item


on extractFrom:thePath matchingXPath:theQuery
   set aURL to current application's class "NSURL"'s fileURLWithPath:thePath -- make NSURL
   set theXMLDoc to current application's NSXMLDocument's alloc()'s initWithContentsOfURL:aURL options:0 |error|:(missing value) -- make XMLDoc
   set attStrings to {} -- where attributes will be stored
   set theXMLOutput to current application's NSXMLElement's alloc()'s initWithName:"output" -- found nodes added to this
   set {theResults, theError} to (theXMLDoc's nodesForXPath:theQuery |error|:(reference)) -- query
   if theResults is missing value then error (theError's localizedDescription()) as text
   repeat with i from 1 to count of theResults
       set aNode to item i of theResults
       aNode's detach() -- need to detach first
       if aNode's |kind|() as integer = current application's NSXMLAttributeKind then -- see if it's an attribute or node
           set end of attStrings to (aNode's stringValue()) as text
       else
           (theXMLOutput's addChild:aNode) -- add node
       end if
   end repeat
   return {(theXMLOutput's XMLStringWithOptions:(current application's NSXMLNodePrettyPrint)) as text, attStrings} -- change options to suit
end extractFrom:matchingXPath:

Oh yeah, and here's the xml file…

Applescript:


<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c111 79.158366, 2015/09/25-01:12:00 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stMfs="http://ns.adobe.com/xap/1.0/sType/ManifestItem#"
xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
<dc:format>application/vnd.adobe.illustrator</dc:format>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">Print</rdf:li>
</rdf:Alt>
</dc:title>
<xmp:MetadataDate>2016-04-16T10:44:50-07:00</xmp:MetadataDate>
<xmp:ModifyDate>2016-04-16T10:44:50-07:00</xmp:ModifyDate>
<xmp:CreateDate>2016-04-16T10:44:49-07:00</xmp:CreateDate>
<xmp:CreatorTool>Adobe Illustrator CC 2015 (Macintosh)</xmp:CreatorTool>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
<xmpGImg:width>256</xmpGImg:width>
<xmpGImg:height>256</xmpGImg:height>
<xmpGImg:format>JPEG</xmpGImg:format>
<xmpGImg:image>/9j/4AAQSkZJRgABAgEBLAEsAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABABLAAAAAEA
AQEsAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4mgJ8MVea6/wDnn5X0u5ntI1kubm3c
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</xmpGImg:image>
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>
<xmpMM:InstanceID>xmp.iid:ee5f9ff6-e3ed-4701-90ae-ea8abb63a09f</xmpMM:InstanceID>
<xmpMM:DocumentID>xmp.did:ee5f9ff6-e3ed-4701-90ae-ea8abb63a09f</xmpMM:DocumentID>
<xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
<xmpMM:RenditionClass>default</xmpMM:RenditionClass>
<xmpMM:DerivedFrom rdf:parseType="Resource">
<stRef:instanceID>xmp.iid:0672944d-4dba-447e-b4f9-e44c450b2987</stRef:instanceID>
<stRef:documentID>xmp.did:0672944d-4dba-447e-b4f9-e44c450b2987</stRef:documentID>
<stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
<stRef:renditionClass>default</stRef:renditionClass>
</xmpMM:DerivedFrom>
<xmpMM:History>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<stEvt:action>saved</stEvt:action>
<stEvt:instanceID>xmp.iid:0672944d-4dba-447e-b4f9-e44c450b2987</stEvt:instanceID>
<stEvt:when>2016-04-16T10:41:09-07:00</stEvt:when>
<stEvt:softwareAgent>Adobe Illustrator CC 2015 (Macintosh)</stEvt:softwareAgent>
<stEvt:changed>/</stEvt:changed>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<stEvt:action>saved</stEvt:action>
<stEvt:instanceID>xmp.iid:ee5f9ff6-e3ed-4701-90ae-ea8abb63a09f</stEvt:instanceID>
<stEvt:when>2016-04-16T10:44:50-07:00</stEvt:when>
<stEvt:softwareAgent>Adobe Illustrator CC 2015 (Macintosh)</stEvt:softwareAgent>
<stEvt:changed>/</stEvt:changed>
</rdf:li>
</rdf:Seq>
</xmpMM:History>
<xmpMM:Manifest>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<stMfs:linkForm>EmbedByReference</stMfs:linkForm>
<stMfs:reference rdf:parseType="Resource">
<stRef:filePath>/Users/johnappleseed/Documents/Projects/SimpleAiData/image.jpg</stRef:filePath>
<stRef:documentID>adobe:docid:photoshop:3ad8aec1-4489-1179-b45c-b413020ff465</stRef:documentID>
<stRef:instanceID>xmp.iid:702e2c9c-1470-4612-b0c2-a24b3bd540ee</stRef:instanceID>
</stMfs:reference>
</rdf:li>
</rdf:Seq>
</xmpMM:Manifest>
<xmpMM:Ingredients>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<stRef:filePath>/Users/johnappleseed/Documents/Projects/SimpleAiData/image.jpg</stRef:filePath>
<stRef:documentID>adobe:docid:photoshop:3ad8aec1-4489-1179-b45c-b413020ff465</stRef:documentID>
<stRef:instanceID>xmp.iid:702e2c9c-1470-4612-b0c2-a24b3bd540ee</stRef:instanceID>
</rdf:li>
</rdf:Bag>
</xmpMM:Ingredients>
<illustrator:Type>Document</illustrator:Type>
<illustrator:StartupProfile>Print</illustrator:StartupProfile>
<xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
<xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
<xmpTPg:NPages>1</xmpTPg:NPages>
<xmpTPg:MaxPageSize rdf:parseType="Resource">
<stDim:w>1.706667</stDim:w>
<stDim:h>1.706667</stDim:h>
<stDim:unit>Inches</stDim:unit>
</xmpTPg:MaxPageSize>
<xmpTPg:PlateNames>
<rdf:Seq>
<rdf:li>Cyan</rdf:li>
<rdf:li>Magenta</rdf:li>
<rdf:li>Yellow</rdf:li>
<rdf:li>Black</rdf:li>
</rdf:Seq>
</xmpTPg:PlateNames>
<xmpTPg:SwatchGroups>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:groupName>Default Swatch Group</xmpG:groupName>
<xmpG:groupType>0</xmpG:groupType>
<xmpG:Colorants>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>White</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>Black</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>100.000000</xmpG:black>
</rdf:li>
</rdf:Seq>
</xmpG:Colorants>
</rdf:li>
</rdf:Seq>
</xmpTPg:SwatchGroups>
<pdf:Producer>Adobe PDF library 10.01</pdf:Producer>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>





















<?xpacket end="w"?>

Last edited by mac.jedi (2016-04-16 01:36:56 pm)


Filed under: xml, Illustrator, xpath, xmp

Offline

 

#2 2016-04-17 08:28:26 am

Shane Stanley
Member
From:: Australia
Registered: 2002-12-07
Posts: 5199

Re: Converting an Xpath shell query for Adobe Illustrator XMP file to ASOC

I'm pretty sure the problem is that XMLDocument only supports XPath 1.0, whereas you need a later version for queries containing colons like that.


Shane Stanley <sstanley@myriad-com.com.au>
www.macosxautomation.com/applescript/apps/

Offline

 

#3 2016-04-17 09:32:25 am

mac.jedi
Member
Registered: 2008-04-23
Posts: 43

Re: Converting an Xpath shell query for Adobe Illustrator XMP file to ASOC

Shane Stanley wrote:

I'm pretty sure the problem is that XMLDocument only supports XPath 1.0, whereas you need a later version for queries containing colons like that.


Thanks for the reply!  In the documentation is says something about using XQuery 1.0 and XPath 2.0.  The command line uses xpath 5.18. I'll have to look and see what the differences are.  The code actually runs pretty fast as is so I may just convert the call to obj-c, but still use the cli to get the strings.

I got the third edition of Everyday AppleScriptObjC yesterday… great stuff!!!

Thanks!

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)