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.