In reading METS 1.7 schema and the METS Primer, I ran across what appears to be a discrepancy in the discussion of the <transformFile> element.  The example in the Primer (quoted at the end of this message) clearly shows content inside the transformFile element, though the content shown is a bit odd: 

 

<sample01.tar.gz | tar -xvf >

 

I would have expected that content to have CDATA marked sections around it or the < escaped.  When I load the 1.7 METS schema in Oxygen 9.0, however, it tells me that the transformFile element is declared to have an empty content model and that content isn’t allowed at this location.  I looked in the schema and there is no internal documentation for the transformFile element and only a brief mention in the change logs regarding this element.  So is the example wrong or the schema?  

 

What got me interested in this example was that I was looking for the METS way to describe locations inside a complex tar file, one with a directory tree inside the tar.  The markup in this example seems a bit squishy: the link from the TIFF and JPEG back to the tar isn’t clear…at least not to me (grin).  It took me a couple of readings to realize that the rule here was that to actually locate the TIFF file, you had to read sideways in the tree, find a preceding sibling element with USE=”Container”, move to the child FLocat and child transformFile and then apply the transformation rule. I was expecting that the xlink:href on the extracted file would point back to the tar file explicitly as the location.     

 

This transformFile element is an interesting concept; is anyone using transformFile in their profile?  The index to profiles doesn’t go to that level of granularity.  

 

--- Evan Owens

 

 

EXCERPT FROM METS PRIMER . . . .

 

TRANSFORM FILE -- EXAMPLE

 

 

The following example describes a *.tar.gz file which has two embedded files within it, one a TIFF file and the other a JPEG file of the same image. To use the <fileSec> to describe these files, you could use the <transformFile> element in the following way:

<mets:fileSec ID="TransformEX_01">

<mets:fileGrp ID="TAR_GZ_container_01" USE="Container">

<mets:file MIMETYPE="application/tar.gz" USE="Container">

<mets:FLocat xlink:href="file:sample01.tar.gz" ID="sampleTar01.gz"

LOCTYPE="URL" />

<mets:transformFile TRANSFORMORDER="1" TRANSFORMTYPE="decompression"

TRANSFORMALGORITHM="gunzip">

<sample01.tar.gz | tar -xvf >

</mets:transformFile>

<mets:file SEQ="1" MIMETYPE="image/tiff" CHECKSUM=

"c1b82611e48066016ceb8daa93d46de7"CHECKSUMTYPE="MD5">

<mets:FLocat xlink:href="file:sample01_image01.tiff" LOCTYPE="URL"

USE="Archival Master"/>

</mets:file>

<mets:file SEQ="2" MIMETYPE="image/jpeg" CHECKSUM=

"c3cb82611e48066016ceb8daa93d46df5" CHECKSUMTYPE="MD5">

<mets:FLocat xlink:href="file:sample01_image01jpeg"

LOCTYPE="URL"USE="Display Derivative"/>

</mets:file>

</mets:file>

</mets:fileGrp>

</mets:fileSec>

COMPLETE FILE SECTION -- EXAMPLES