В eXist-db 4.4, XQuery 3.1 я использую автоматизацию для сжатия ряда XML-файлов. Проблема в том, что когда они сжимают, они хранят только текстовое содержимое, а не XML-содержимое.
Эта функция использует compression:zip
для создания почтового индекса из пакета документов:
declare option exist:serialize "expand-xincludes=no";
declare option exist:serialize "method=xml media-type=application/xml";
declare function zip:create-zip-by-batch()
{
[...]
let $zipobject := compression:zip(zip:get-entry-for-zip($x,false())
let $zipname := "foozipname.zip"
let $store := xmldb:store("/db/foodirectory", $zipname, $zipobject)
return $store
};
Вышеуказанная функция вызывает эту функцию, когда документы сериализуются и помещаются в <entry>
за документацию :
declare option exist:serialize "expand-xincludes=no";
declare option exist:serialize "method=xml media-type=application/xml";
declare function zip:get-entry-for-zip($x)
{
[...for each $foo document in $x, create an <entry>...]
let $serialized := serialize($foo, map { "method": "xml" })
let $entry =
<entry name="somefooname" type='xml' method='store'>
{$serialized}
</entry>
[...return a sequence of $entry...]
}
Я думаю, что отсутствует конфигурация для сериализации, но я не могу понять ...
Заранее спасибо за любую помощь.