Я хотел бы повторить субпиксельную часть XProc для заданного количества раз. (В моем USECASE subpipeline состоит из ехеса шага, который работает LaTeX над ранее созданным .tex-файлом)XProc - Как повторить субпипелин за определенное количество раз
упрощенной версия моего кода выглядит следующим образом, что не дает никакого результата до сих пор:
<p:declare-step version="1.0"
xmlns:p="http://www.w3.org/ns/xproc"
xmlns:c="http://www.w3.org/ns/xproc-step">
<p:option name="latex-exec" select="'uri/latex'"/>
<p:option name="latex-repeat" select="3"/>
<p:option name="tmp-path" select="'uri/tmp/'"/>
<p:option name="tmp-file" select="'tmp'"/>
<!-- pre-processing -->
<p:for-each>
<p:iteration-source select="(1 to $latex-repeat)"/>
<p:exec result-is-xml="false">
<p:with-option name="command" select="$latex-exec"/>
<p:with-option name="args" select="string-join(('-interaction=nonstopmode','-halt-on-error','-output-format=pdf',concat('-output-directory=',$tmp-path),concat($tmp-path,$tmp-file,'.tex')),' ')"/>
<p:input port="source">
<p:empty/>
</p:input>
</p:exec>
</p:for-each>
Я не знаю, если это проблема с выражением XPath-2.0 в р: итерация исходным элементом. Однако следующие работы и дает правильный результат «сообщение: 3»:
<cx:message>
<p:with-option name="message" select="count((1 to $latex-repeat))"/>
<p:input port="source">
<p:empty/>
</p:input>
</cx:message>
Мой Exec шаг проверяется вне для-каждого цикла и работ. Я работаю с Calabash под Oxygen 16.0.
В моем примере не генерируются никакой ошибки, вероятно, потому, выберите выражение игнорируется все вместе, когда вход пуст? Если предоставляется допустимый, непустой вход, [err: XD0016] (http://www.w3.org/TR/xproc/#err.inline.D0016) (не err: XD0001). Итак, ap: for-each со следующим объявлением источника не выдает ошибок для любого выражения XPath и никогда не будет итерации ?: ' p: итерация-источник> ' Тогда, почему бы разрешить ap: пусто как источник итерации? –
FRNS
Ваше альтернативное предложение должно сделать трюк. Я даю другое альтернативное решение, которое поддерживает функциональность итерации, отделенную от подзаголовка (см. Мой ответ). К сожалению, и ваше, и мое решение приходят немного долго, я бы полюбил более простой подход к итерациям. – FRNS