Re: [xsl] Saxon auto-recognition of sequence of XML and XSLT document possible ?

Subject: Re: [xsl] Saxon auto-recognition of sequence of XML and XSLT document possible ?
From: Abel Braaksma <>
Date: Fri, 02 Feb 2007 14:59:26 +0100
Ben Stover wrote:
I want to create a DOS batch file onto I can drag TWO documents simultaneously:
ONE XML source and ONE XSLT sheet.

The key command in this batch file will be similar to

java -jar saxon8.jar "%1" "%2" .....

It now occurs from time to time that the XSLT stylesheet will be the first parameter %1
and the second  %2 represents the XML doc.

Is there no Auto-recognition from Saxon to detect which of the two documents is the
XML and which the XSLT stylesheet and hence allow also

java -jar dir/saxon8.jar [options] stylesheet source-document [ params...]

Maybe I have to pass another option?

There is no sense in 'auto-sensing' from Saxon's point of view, as XSLT itself is XML and can be used as the source for another XSLT document (which I often do).

However, in cases where only a specific type of calling convention is used (you seem to always have one *.xslt and one *.xml document and the second is the source for the first, correct?), you can use simple DOS Batch techniques.

Since you seem to already know how to work with DOS, you only have to change the following batch example to fit your needs. It uses a "trick" by exploring the errorlevel return code of the findstr dos utility (which is '1' when string is not found). Basic piping and trashing to the bin (nul) is used for making it a non-obtrusive simple command (third line below). You may have to change the findstr command a bit, for instance if you have *.xsl instead of *.xslt, or if you call it with quotes around it etc. Findstr supports regexes, check findstr /? for how.

The rest if the commands follow common msdos batch file logic with if/goto/label etc. Change "saxon" (which is on my path) to the way you call saxon.

-- Abel Braaksma

@echo off

REM The pipeline and %1 may not have a space between!
echo %1| findstr /E /C:.xslt >nul


REM The XML file is the first argument, this is normal
echo saxon %1 %2
saxon %1 %2
goto END

REM The XML file is the second argument, switch them
echo XMLSECOND (switch back)
echo saxon %2 %1
saxon %2 %1
goto END


Current Thread