Página 1 de 1

Corregir xmlns:schemaLocation

Publicado: Mié Jul 18, 2012 2:02 pm
por Guerrero
Buenas....

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 ( :x ) al IMSS y su nuevo validador me empezaron a rechazar las facturas por un detalle en el XML:

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 :D).

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. :D

Re: Corregir xmlns:schemaLocation

Publicado: Mié Jul 18, 2012 2:37 pm
por Dado
Si, los del IMSS revisan "hasta el punto y coma" y exageran, pero sabes que es lo peor? que en parte tienen razon :x

En fin, gracias por tu aportacion :D

Re: Corregir xmlns:schemaLocation

Publicado: Mié Jul 18, 2012 6:03 pm
por Guerrero
Buenas Tardes....

Aquí reportándome solo para avisar que si paso la prueba el cambio ante el temible :shock: validador del IMSS.

Y pues sí, desafortunadamente tienen razón y es un error que forzosamente se tenía que cambiar, así que ni hablar :lol:

Gracias por el sitio y la ayuda. :D

Saludos!!!