diff options
-rw-r--r-- | src/java/org/apache/fop/cli/InputHandler.java | 31 | ||||
-rw-r--r-- | status.xml | 3 |
2 files changed, 31 insertions, 3 deletions
diff --git a/src/java/org/apache/fop/cli/InputHandler.java b/src/java/org/apache/fop/cli/InputHandler.java index 89977beb7..a49c978f6 100644 --- a/src/java/org/apache/fop/cli/InputHandler.java +++ b/src/java/org/apache/fop/cli/InputHandler.java @@ -21,9 +21,13 @@ package org.apache.fop.cli; // Imported java.io classes import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.io.OutputStream; import java.util.Vector; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.ErrorListener; import javax.xml.transform.Result; import javax.xml.transform.Source; @@ -31,17 +35,20 @@ import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.sax.SAXResult; +import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.apache.fop.apps.FOPException; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.apps.Fop; import org.apache.fop.apps.FopFactory; import org.apache.fop.render.awt.viewer.Renderable; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; /** * Class for handling files input from command line @@ -133,11 +140,29 @@ public class InputHandler implements ErrorListener, Renderable { } /** - * Creates a Source for the main input file. + * Creates a Source for the main input file. Processes XInclude if + * available in the XML parser. + * * @return the Source for the main input file */ protected Source createMainSource() { - return new StreamSource(this.sourcefile); + Source result; + try { + InputSource is = new InputSource(new FileInputStream( + this.sourcefile)); + SAXParserFactory spf = SAXParserFactory.newInstance(); + spf.setNamespaceAware(true); + spf.setXIncludeAware(true); + XMLReader xr = spf.newSAXParser().getXMLReader(); + result = new SAXSource(xr, is); + } catch (SAXException e) { + result = new StreamSource(this.sourcefile); + } catch (IOException e) { + result = new StreamSource(this.sourcefile); + } catch (ParserConfigurationException e) { + result = new StreamSource(this.sourcefile); + } + return result; } /** diff --git a/status.xml b/status.xml index 6236a7c56..0dc2548ae 100644 --- a/status.xml +++ b/status.xml @@ -28,6 +28,9 @@ <changes> <release version="FOP Trunk"> + <action context="Code" dev="MB" type="add"> + Turned on XInclude processing for the main source given on the command line. + </action> <action context="Fonts" dev="JM" type="fix" fixed-bug="44451" due-to="Justus Piater"> Improved the font auto-detection so fonts accessed using the font-family name are selected with higher accuracy. |