Setting the Transformer Factory for Command Line Use

If you are running the Open Toolkit from a command line you can specify the javax.xml.transform.TransformerFactory property on the ant or dita command line directly using a -D parameter:
c:\DITA-OT>dita -Djavax.xml.transform.TransformerFactory=org.ditacommunity.i18n.saxon.DCI18nSaxonTransformerFactoryImpl91 
-i /Users/ekimber/workspace/Thunderbird/User-Guide.ditamap ...

You can also use the ANT_OPTS environment variable to specify the property using the -D Java command-line parameter:

Windows:
c:\DITA-OT>set ANT_OPTS="-Xmx512m  -Djavax.xml.transform.TransformerFactory=org.ditacommunity.i18n.saxon.DCI18nSaxonTransformerFactoryImpl91"

macOS and Linux:

ekimber$ export ANT_OPTS="-Xmx512m  -Djavax.xml.transform.TransformerFactory=org.ditacommunity.i18n.saxon.DCI18nSaxonTransformerFactoryImpl91"

If you are using the 1.8.5 Open Toolkit, you can modify the startcmd.sh or startcmd.bat file to set the ANT_OPTS environment variable, e.g.:

Windows:
...
REM Set environment variables
set ANT_OPTS=-Xmx512m %ANT_OPTS%
set ANT_OPTS=%ANT_OPTS% -Djavax.xml.transform.TransformerFactory=org.ditacommunity.i18n.saxon.DCI18nSaxonTransformerFactoryImpl91
set ANT_HOME=%DITA_DIR%
...

macOS and Linux:

...
export ANT_OPTS="-Xmx512m $ANT_OPTS"
export ANT_OPTS="$ANT_OPTS -Djavax.xml.transform.TransformerFactory=org.ditacommunity.i18n.saxon.DCI18nSaxonTransformerFactoryImpl91"
export ANT_HOME="$DITA_DIR"
...

For DITA OT 2.x and later you can set the ANT_OPTS environment variable globally.

You can test that the transformer factory is correctly configured by running the Ant target "org.dita-community-i18n-xslt-test":

ekimber$ ant org.dita-community-i18n-xslt-test 
Buildfile: /Users/ekimber/dita-ot/DITA-OT/build.xml

org.dita-community-i18n-xslt-test:
     [echo] org.dita-community.i18n XSLT collator test
     [echo] ANT_OPTS="-Xmx512m  -Djavax.xml.transform.TransformerFactory=org.ditacommunity.i18n.saxon.DCI18nSaxonTransformerFactoryImpl91"
     [xslt] Processing /Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/resources/source-data/test-zh-cn.xml to /Users/ekimber/dita-ot/DITA-OT/out/zh-cn-xslt-test.html
     [xslt] Loading stylesheet /Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/xsl/test-collator.xsl
     [xslt] DCI18nSaxonTransformerFactoryImpl: Setting collation URI resolver to DCI18nCollationUriResolver91
     [xslt]  + [INFO] Processing source document file:/Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/resources/source-data/test-zh-cn.xml...
     [xslt]  + [INFO] Using collator "http://org.dita-community.i18n.zhCNawareCollator?lang=zh-CN"
     [xslt] DCI18nCollationUriResolver91 version 1.0.0
     [xslt] + [DEBUG] DCI18nCollationUriResolver91.resolve(): Collation URI="http://org.dita-community.i18n.zhCNawareCollator?lang=zh-CN"
     [xslt] + [DEBUG] DCI18nCollationUriResolver91.resolve():   Returning ZhCnAwareCollator
     [xslt] + [DEBUG] splitWords(): text="从前有一位楚国人, 他非常爱惜他的宝剑。", debug=false
     [xslt]  + [INFO] Document processed.

BUILD SUCCESSFUL
Total time: 1 second

The output of the test is in the out/ directory under the DITA OT directory.

If you see a result like this:
ekimber$ ant org.dita-community.i18n-xslt-test 
Buildfile: /Users/ekimber/dita-ot/DITA-OT/build.xml

org.dita-community.i18n-xslt-test:
     [echo] org.dita-community.i18n XSLT collator test
     [echo] ANT_OPTS="${env.ANT_OPTS}"
     [xslt] Processing /Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/resources/source-data/test-zh-cn.xml to /Users/ekimber/dita-ot/DITA-OT/out/zh-cn-xslt-test.html
     [xslt] Loading stylesheet /Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/xsl/test-collator.xsl
     [xslt]  + [INFO] Processing source document file:/Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/resources/source-data/test-zh-cn.xml...
     [xslt]  + [INFO] Using collator "http://org.dita-community.i18n.zhCNawareCollator?lang=zh-CN"
     [xslt] /Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/xsl/test-collator.xsl:82: Fatal Error! Unknown collation http://org.dita-community.i18n.zhCNawareCollator?lang=zh-CN
     [xslt] Failed to process /Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/resources/source-data/test-zh-cn.xml

BUILD FAILED
/Users/ekimber/dita-ot/DITA-OT/build.xml:175: Fatal error during transformation using /Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/xsl/test-collator.xsl: Unknown collation http://org.dita-community.i18n.zhCNawareCollator?lang=zh-CN; SystemID: file:/Users/ekimber/dita-ot/DITA-OT/plugins/org.dita-community.i18n/test/xsl/test-collator.xsl; Line#: 82; Column#: -1

Total time: 0 seconds

It means the javax.xml.transform.TransformerFactory property is not set correctly.