diff --git a/exec/xjs_handler.js b/exec/xjs_handler.js
index f8a3cd802b368c2908f1e35e12eaab7b5ba7fde9..69ca7f2793b1e30743c307d11efbd5a054407a8f 100644
--- a/exec/xjs_handler.js
+++ b/exec/xjs_handler.js
@@ -19,51 +19,56 @@ if(file_exists(ssjs_filename)) {
 }
 
 if(!file_exists(ssjs_filename)) {
-   var file = new File(filename);
-   if(!file.open("r",true,8192)) {
-	   writeln("!ERROR " + file.error + " opening " + filename);
-	   exit();
-   }
-   var text = file.readAll(8192);
-   file.close();
+	var file = new File(filename);
+	if(!file.open("r",true,8192)) {
+		writeln("!ERROR " + file.error + " opening " + filename);
+		exit();
+	}
+	var text = file.readAll(8192);
+	file.close();
 
-   var script="";
+	var script="";
 
-   var in_xjs=false;
-   for (line in text) {
-	   var str=text[line];
-	   while(str != '') {
-		   if(!in_xjs) {
-			   if(str.search(/<\?xjs\s+/)==-1) {
-				   script += "writeln("+escape_quotes(str)+");\r\n";
-				   str='';
-			   }
-			   else {
-				   str=str.replace(/^(.*?)<\?xjs\s+/,
-					   function (str, p1, offset, s) {
-						   script += "write("+escape_quotes(p1)+");\r\n";
-						   in_xjs=true;
-						   return '';
-					   }
-				   );
-			   }
-		   }
-		   else {
-			   if(str.search(/\?>/)==-1) {
-				   script += str;
-				   str='';
-			   }
-			   else {
-				   str=str.replace(/^(.*?)\?>/,
-					   function (str, p1, offset, s) {
-						   script += p1+";\r\n";
-						   in_xjs=false;
-						   return '';
-					   }
-				   );
-			   }
-		   }
-	   }
+	var in_xjs=false;
+	for (line in text) {
+		var str=text[line];
+		while(str != '') {
+			if(!in_xjs) {
+				if(str=='<?xjs' || str=='<?') {
+					in_xjs=true;
+					str='';
+				}
+				else {
+					if(str.search(/<\?(xjs)?\s+/)==-1) {
+						script += "writeln("+escape_quotes(str)+");\r\n";
+						str='';
+					}
+					else {
+						str=str.replace(/^(.*?)<\?(xjs)?\s+/,
+						function (str, p1, p2, offset, s) {
+							script += "write("+escape_quotes(p1)+");\r\n";
+							in_xjs=true;
+							return '';
+						}
+					);
+				}
+			}
+			else {
+				if(str.search(/\?>/)==-1) {
+					script += str;
+					str='';
+				}
+				else {
+					str=str.replace(/^(.*?)\?>/,
+						function (str, p1, offset, s) {
+							script += p1+";\r\n";
+							in_xjs=false;
+							return '';
+						}
+					);
+				}
+			}
+		}
 	}
 
 	var f=new File(ssjs_filename);