Как использовать XProc в качестве фильтра копирования в Gradle?

У меня есть сценарий XQuery, который я хочу запустить для всех файлов в задаче копирования градиента в качестве фильтра. Я смотрю и на XQJ, и на XPrc. Поскольку в ml-gradle есть поддерживаемая реализация Calabash, я решил пойти по этому пути.

Есть ли пример использования XProc в качестве фильтра в задаче копирования градиента?

Вот то, что я использовал для задачи gradle для создания xqDoc с использованием java-библиотеки xqDoc. Мне нужна помощь, чтобы сделать что-то подобное, но с использованием XProc в качестве фильтра.

class XQDocFilter extends BaseFilterReader {
  XQDocFilter(Reader input) {
    super(new StringReader(new org.xqdoc.MarkLogicProcessor().process(input.text)))
  }
}

task generateXQDocs(type: Copy) {
  into 'xqDoc'
  from 'src/main/ml-modules'
  include '**/*.xq*'
  rename { it - '.xq*' + '.xml' }
  includeEmptyDirs = false
  eachFile { println it }
  filter XQDocFilter
}

person Loren Cahlander    schedule 20.03.2020    source источник
comment
Вы имеете в виду, что есть поддерживаемая реализация в gradle, а не в ml-gradle, правильно? Я не вижу никаких ссылок на Calabash в мл-градле. Предполагая, что вы имели в виду github.com/ndw/xmlcalabash1-gradle?   -  person Mads Hansen    schedule 21.03.2020
comment
Я имею в виду реализацию Gradle XML Calabash от Norm.   -  person Loren Cahlander    schedule 22.03.2020


Ответы (1)


Я добавил класс XMLCalabashFilter в xmlcalabash1-gradle, начиная с версии 1.5.0.

person Norm    schedule 23.03.2020
comment
Добрый день, Норм, спасибо. Я с нетерпением жду ваших отзывов. Моей альтернативой было бы использовать XQJ и реализовать фильтр. Я не вижу большой поддержки XQL. - person Loren Cahlander; 23.03.2020
comment
Я считаю, что документы Gradle очень сложны в использовании. Насколько я могу судить, фильтр применяется к каждой строке в файле. Если это так, я не уверен, что XProc 1.0 подойдет. Я планирую также сделать версии для XPrc 3.0, а работать с текстом в версии 3.0 намного проще. - person Norm; 24.03.2020
comment
Фильтр применяется к каждому файлу. Если вы посмотрите на задачу gradle, которую я включил выше, она запускает фильтр для каждого идентифицированного исходного файла XQuery и возвращает XML-документ xqDoc. - person Loren Cahlander; 24.03.2020
comment
Итак, документация Gradle снова подвела меня. Вздох. посмотрю еще раз. Если вы знаете, где задокументирован API BaseFileReader, не стесняйтесь указать мне правильное направление. - person Norm; 25.03.2020
comment
Проверьте import org.apache.tools.ant.filters.BaseFilterReader. Ознакомьтесь с build.gradle по адресу github.com/easymetahub/emh-marklogic-glossary. - person Loren Cahlander; 25.03.2020
comment
В порядке. Кажется, это возможно. Я посмотрю что я могу сделать. - person Norm; 27.03.2020
comment
@LorenCahlander Я только что опубликовал версию 1.5.0 расширения xmlcalabash1-gradle, которое включает фильтр. Вы найдете пример того, как его использовать в репозитории в src/test/resources. Дайте мне знать, если это работает для вас. - person Norm; 29.03.2020