Add space if find "?>" inside PI data.
diff --git a/src/org/apache/xalan/serialize/FormatterToXML.java b/src/org/apache/xalan/serialize/FormatterToXML.java
index ce3e9fb..cf35f5b 100644
--- a/src/org/apache/xalan/serialize/FormatterToXML.java
+++ b/src/org/apache/xalan/serialize/FormatterToXML.java
@@ -1039,7 +1039,25 @@
if (data.length() > 0 &&!Character.isSpaceChar(data.charAt(0)))
accum(' ');
- accum(data);
+ int indexOfQLT = data.indexOf("?>");
+ if(indexOfQLT >= 0)
+ {
+ // See XSLT spec on error recovery of "?>" in PIs.
+ if(indexOfQLT > 0)
+ {
+ accum(data.substring(0, indexOfQLT));
+ }
+ accum("? >"); // add space between.
+ if((indexOfQLT+2) < data.length())
+ {
+ accum(data.substring(indexOfQLT+2));
+ }
+ }
+ else
+ {
+ accum(data);
+ }
+
accum('?');
accum('>');