XQuery/XMP 数据
外观
< XQuery
Adobe 推出了一个用于图像元数据的 XML 格式,称为 XMP。 您想显示一张照片和一些元数据。
Matt Turner 有一个使用 MarkLogic 从 JPEG 图像中提取 XMP 数据的示例 [1]。
以下是使用 eXist XQuery 扩展的代码。 Matt 的 " 照片 已存储在 XML 数据库中作为二进制文件。
二进制图像从数据库中作为 BASE64 编码字符串检索,转换为 UTF-8 字符串,提取元数据文本并使用 util:parse() 转换回 XML
declare function local:extract-xmp ($jpeg as xs:string) as item() { let $binary := util:binary-doc($jpeg) let $text := util:binary-to-string($binary) let $xmp := substring-after($text,"<x:xmpmeta") let $xmp := substring-before($xmp,"</x:xmpmeta>") let $xmp := concat("<x:xmpmeta",$xmp,"</x:xmpmeta>") return util:parse($xmp) }; let $photo := request:get-parameter("photo",()) let $xmp := local:extract-xmp(concat("/db/Wiki/eXist/",$photo)) return $xmp
这里我们提取一些 Dublin Core 元素并创建一个包含图像和元数据的 HTML 片段。
declare namespace dc="http://purl.org/dc/elements/1.1/"; declare function local:extract-xmp ($jpeg as xs:string) as item() { ..... }; declare option exist:serialize "method=xhtml media-type=text/html"; let $photo := request:get-parameter("photo",()) let $xmp := local:extract-xmp(concat("/db/Wiki/eXist/",$photo)) return <div> <img src="../{$photo}"/> <ul> <li> Format : {string($xmp//dc:format)}</li> <li>Title: {string($xmp//dc:title)}</li> <li>Creator: {string($xmp//dc:creator)}</li> </ul> </div>