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>