Para poder generar el xml (y demás cosas), en mi caso, se genero un objeto con la aplicación xsd.exe del visual studio a partir del archivo del sat cadenaoriginal_2_2.xslt. . El código esta hecho en C#.
Gracias (

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"[b] xmlns:schemaLocation[/b]="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv22.xsd" version="2.2"
La solución es muy sencilla (tan sencilla, que yo nunca hubiera dado con ella, si es que no me la topo por casualidad

En la clase que se genero con la aplicación xsd.exe agregue un namespace:
using System.Xml.Schema;
Y al final de la clase "public partial class Comprobante" añadí esto:
[XmlAttribute(Namespace = XmlSchema.InstanceNamespace)]
public string schemaLocation = "http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv22.xsd";
En el procedimiento para generar el XML solo puse como comentario la línea del esquema para que no me la duplicara:
XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces();
xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
// xmlNameSpace.Add("schemaLocation", "http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv22.xsd"); <-- esta linea me generaba el xmlns:schemaLocation
Después de todo esto, genere el XML y lo probé con el validacfd y todo anda bien.
Más tarde lo pruebo con el validador del IMSS y les cuento.
Espero que les sirva de algo.
Saludos.
