Hola, Roben,
no indicas que lenguaje de servidor usas, lo que yo haría en asp.net (tendrás equivalencias para otros lenguajes) sería no escribir en el xml las primeras líneas
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="1.xsl"?>
Y dejar en xml sólo los datos xml.
En el servidor sabes si lo quieres presentar con el xsl1 o con el xsl2 según lo que indique el usuario.
En asp.net tienes los IHTTPHandler. Yo me crearía uno, cuando pidan con el xsl1 creas la cadena xml que quieres devolver, en la que concatenas estas primeras líneas y luego lees el fichero xml, lo juntas y lo devuelves. Para el 2 lo mismo.
<%@ WebHandler Language="C#" Class="ControladorXML" %>
using System;
using System.Web;
using System.Text;
using System.IO;
public class ControladorXML : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/xml";
StringBuilder constructor = new StringBuilder();
String rutaFicheroXML = "xml/fichero.xml";
constructor.Append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
constructor.AppendLine("<?xml-stylesheet type=\"text/xsl\" href=\"1.xsl\"?>");
constructor.Append(File.ReadAllText(rutaFicheroXML));
context.Response.Write(constructor.ToString());
}
public bool IsReusable {
get {
return false;
}
}
}
Ya te digo que esto es en asp.net pero en php, java o el que sea tendrás un equivalente en el que hacerlo de una manera parecida.
Un saludo, Guille.