2016-09-02 2 views
0

У меня есть этот командный файл, который обрабатывает xml-файл в каталоге/input.Xslt Saxon processor - все файлы в каталоге

java -jar c:/SaxonHE9-6-0-6J/saxon9he.jar -s:D:/hdbook-Convertor/input/ -xsl:C:\Automation\hdbook-convertor.xml -o:D:\hdbook-Convertor\output -xmlversion:1.0 

Я хочу, чтобы иметь возможность обрабатывать вложенные каталоги и файлы в них, структура которой enter image description here

, а затем переместить все обработанные файлы в папку вывода. Я не могу понять, как сделать -s:D:/hdbook-Convertor/input/ петлей во всех подкаталогах?

+0

Что Saxon предполагается сделать с различными 'pdf' файлы в любом случае? –

+0

ничего, его просто взять xml и использовать таблицу стилей, чтобы переформатировать ее – 99ajohnson

ответ

1

Попробуйте это (непроверенные)

for /f "delims=" %%f in ('dir /b /s /ad D:\hdbook-Convertor\input') do echo java -jar c:/SaxonHE9-6-0-6J/saxon9he.jar -s:"%%~dpf" -xsl:C:\Automation\hdbook-convertor.xml -o:D:\hdbook-Convertor\output -xmlversion:1.0 

Если команды выглядят правильно и хорошо работать (попробуйте пару их вручную), удалить «эхо» для фактического объемного исполнения.

+0

спасибо параг, что вид работы, сценарий заглянул в каждый каталог, но saxon не выполнил преобразование xlst. См. Вывод командной строки ниже – 99ajohnson

+0

C: \ Automation> for/F "delims ="% f in ('dir/b/s/ad D: \ hdbook-Convertor \ input') do java -jar c:/SaxonHE9 -6-0-6J/saxon9he.jar -s: "% ~ dpf" -xsl: C: \ Automation \ hdbook-convertor.xml -o: D: \ hdbook-Convertor \ output -xmlversion: 1.0 C: \ Automation> java -jar c: /SaxonHE9-6-0-6J/saxon9he.jar -s: "D: \ hdbook-Convertor \ вход \" -xsl: C: \ Automation \ hdbook-convertor.xml -o : D: \ hdbook-Convertor \ output - xmlversion: 1.0 Нет имени файла стилей Saxon-HE 9.6.0.6J от Saxonica Использование: см. Http://www.saxonica.com/html/documentation/using-xsl /commandline.html – 99ajohnson

+0

Формат: net.sf.saxon.Transform options params Доступные опции: -? -a -catalog -config -cr -dtd -expand -explain -ext -im -in it -it -l -m -now -o -opt -or -outval -p -quit -r -repeat -s -sa -strip -t -T -t hreads -TJ -TP -traceout -tree -u -val -versionmsg -warnings -x -xi -xmlversion -xsd -xsdversion -xsiloc -xsl -xsltversion -y Использование -XYZ: ? для деталей варианты XYZ – 99ajohnson

0

Попробуйте использовать коллекцию() функции в самой трансформации:

<xsl:template name="main"> 
    <xsl:for-each select="collection('file:///D:/hdbook-Convertor/input/?recurse=yes;select=*.xml')"> 
    <xsl:result-document href="output/{tokenize(document-uri(.), '/')[last()]"> 
     <xsl:apply-templates/> 
    </xsl:result-document> 
    </xsl:for-each> 
</xsl:template> 
+0

Привет Майкл, я использую таблицу стилей, подобную этой таблице ' \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t ' как я бы указал источник в вашем примере? – 99ajohnson

+0

Просто добавьте правило шаблона с именем = "main", а затем вызовите таблицу стилей с -it: main, если она запущена из командной строки, опустив опцию -s (source). –

+0

есть проблема с путём к входному каталогу? 'C: \ Automation> java -jar c: /SaxonHE9-6-0-6J/saxon9he.jar -it: main -xsl: C: \ Autom ation \ hdbook-convertor.xml -o: D: \ hdbook-Convertor \ output -xmlversion: 1.0 Вывод - это каталог, но вход не равен – 99ajohnson