Рад слышать, что это привело вас к рабочему решению!

я есть функция XQuery для преобразования группы файлов XML в HTML и архивирования их. Он запускает trasform для каждого файла для создания элементов <entry>.

Начиная с этой функции:

declare function xport:make-sources( $path as xs:string)  as item()* {
  for $article in collection(xmldb:encode-uri($path))
  let $docnum := $article/article/div[@class = 'content']/@doc/string()
  return
  <entry name="{concat($docnum,'.html')}" type='text' method='store'>
    {transform:transform($article, doc("/db/EIDO/data/edit/xsl/doc-html.xsl"), <parameters/>)}
</entry>
} ;

Учитывая вводимые данные, я запускаю XQuery, чтобы просто показать мне результат преобразования ... и я вижу это (именно то, что я ожидал):

<entry name="LS01.html" type="text" method="store">
<html>
    <head>
        <style>
                body {
                font-family: Arial;
                }
                article img {
                width:50%;
                }
         ...

Вы заметите эту запись, и все они вообще не имеют декларации XML.

Но теперь давайте соберем все это и отправим эти записи в сжатие. Это все внутри веб-приложения. Полный XQuery это:

xquery version "3.0";
import module namespace transform = "http://exist-db.org/xquery/transform";
declare namespace xport = "http://www.xportability.com";
declare function xport:make-sources( $path as xs:string)  as item()* {
for $article in collection(xmldb:encode-uri($path))
  let $docnum := $article/article/div[@class = 'content']/@doc/string()
  return
  <entry name="{concat($docnum,'.html')}" type='text' method='store'>
    {transform:transform($article, doc("/db/EIDO/data/edit/xsl/doc-html.xsl"), <parameters/>)}
</entry>
} ;
let $path := request:get-parameter("path", "")
let $filename := request:get-parameter("filename", "")
let $col := xport:make-sources($path)
return
  response:stream-binary(
    xs:base64Binary(compression:zip($col,true()) ),
    'application/zip',
    $filename
)

Все работает, я получаю ZIP-файл со всеми документами, которые были преобразованы в HTML из XML.

НО, когда я смотрю на файл в ZIP, он имеет следующее:

<?xml version="1.0" encoding="UTF-8"?>
<html>
   <head>

Декларация XML отсутствует ни в одной записи ZIP. Он не существует нигде (как он не мог) в списке записей. Но, по-видимому, их действие заключается в добавлении декларации. Я не вижу другой причины или пути. Даже указание omit-xml-объявление или изменение типа вывода в XSL на текстовый или HTML не имеет значения. И это, конечно, потому что список записей в zip показан выше, и это показывает, что объявление не существуетпосле преобразование.

Файлы в ZIP имеют добавленную декларацию XML, точка.

Есть ли обходной путь?

Ответы на вопрос(1)

Ваш ответ на вопрос