Hola, yo no he manejado openssl para esto de la facturación electrónica, pero cuando tenga la necesidad tomaré de referencia tu código.
Gratuitamente te paso ejemplo de código de cómo se debe validar un XML ya terminado para ver si está correctamente estructurada la información. En este ejemplo se usan directamente los XSD del SAT y se agrega un XSD adicional para una Addenda propia. Espero te sirva.
Código VB.NET:
Ver originalPrivate Sub ValidarEsquema()
Dim va As XmlReader
Dim sc As XmlSchemaSet
If Not File.Exists(strArchivoSalida) Then
strMensajeError = "Error: No se generó el archivo de salida"
Exit Sub
End If
If Not File.Exists(strPath + "cfdv3.xsd") Then
strMensajeError = "Error: No existe el archivo de esquema cfdv3.xsd"
Exit Sub
End If
If Not File.Exists(strPath + "TimbreFiscalDigital.xsd") Then
strMensajeError = "Error: No existe el archivo de esquema TimbreFiscalDigital.xsd"
Exit Sub
End If
If Not File.Exists(strPath + "miempresa.xsd") Then
strMensajeError = "Error: No existe el archivo de esquema miempresa.xsd"
Exit Sub
End If
rs = New XmlReaderSettings()
rs.ValidationType = ValidationType.Schema
sc = New XmlSchemaSet()
rs.Schemas = sc
sc.Add("http://www.sat.gob.mx/cfd/3", strPath + "cfdv3.xsd")
sc.Add("http://www.sat.gob.mx/TimbreFiscalDigital", strPath + "TimbreFiscalDigital.xsd")
sc.Add("http://www.credicam.com/XSD", strPath + "miempresa.xsd")
va = XmlReader.Create(strArchivoSalida, rs)
Try
While va.Read
End While
Catch ex As Exception
strMensajeError = "Error: (" + strSerie + " " & intFolio & ") " + ex.Message
End Try
sc = Nothing
rs = Nothing
End Sub