Preámbulo
Durante la conferencia de @Blagmiro_Contreras sobre la FEL les comenté que pondría en un post un link a los archivos que uso para manejar los XML.
He decidido agrandarlo un poquito mas, tratando de explicar varios aspectos de la FEL y la forma en que se estructura en un archivo XML. Voy a mantener el tema cerrado, pero si alguien tiene una inquietud, yo no he logrado explicar con claridad algún tema, o desean que me extienda, por favor hacérmelo llegar por mensaje privado.
Lección 1. Conceptos Básicos
¿Para qué entender el XML?
La SAT le ha dado importancia mayor al XML. Es el que contiene los datos verdaderos que están guardados tanto en los servidores de ellos (SAT) como los de los certificadores.
La representación gráfica ya sea un archivo PDF o impresión en papel NO ES EL DOCUMENTO DE MAYOR RELEVANCIA.
En caso de diferencias entre el uno y el otro siempre tendrá validez que se envió y firmó en un archivo XML.
¿Qué es el formato XML?
EXtensible Markup Language. Lenguaje extensible de etiquetas para una traducción que se pueda entender razonablemente.
Es un meta-lenguaje (Lenguaje para definir lenguajes) desarrollado por el World Wide Web Consortium (W3C) que con su estructura rigurosa permite definir la gramática de diferentes lenguajes.
- Lo pueden usar los químicos para definir un sistema universal para entender y transmitir la estructura de una molécula (lenguaje)
- Lo pueden usar los informáticos para definir la estructura de un lenguaje de programación
- Lo ha usado la SAT para definir la forma de una factura.
En resumen XML es un lenguaje para:
- Definir lenguajes
- Para formar acuerdos de intercambio de información entre sistemas (Protocolos de intercambio)
Todo lo que se pueda expresar de manera ordenada y estructurada, se puede definir con un XML.
Para mayores referencias históricas se puede consultar la Wikipedia https://es.wikipedia.org/wiki/Extensible_Markup_Language
¿Qué caracteriza un formato XML?
La principal característica es que tiene estructura y etiquetas que se abren y se cierran para crear bloques de información anidados llamados NODOS.
Se utilizan los símbolos < y > para encerrar las etiquetas y una / para indicar que la etiqueta es de cierre.
Ejemplo:
Como se podrá notar en el ejemplo anterior, el XML es verboso (lleno de palabras) pero puede ser claro para quien comprenda la estructura de lo que debe contener.
¿Qué lleva un archivo en formato XML?
Primera Línea Generalmente contiene datos sobre cómo se entiende el archivo. Esto obedece a que los sistemas informáticos necesitan ser orientados sobre la forma de trabajar o entender un documento.
Suele ser algo como
Y no voy a entrar en detalles de lo que significa. Para efectos revisar el contenido de una FEL no nos servirá.
Después de la Primera Línea ya vienen las etiquetas de definición de un NODO raíz que contiene otras etiquetas anidadas (Nodos)
En este caso el nodo de la raíz se llama GTDocumento y a su vez contiene dos nodos
- SAT
- Signature
La parte SAT contiene la información del documento y Signature tiene una firma criptográfica que permite validar que el nodo SAT no ha sido modificado. La firma criptográfica se crea con el archivo de firma .PFX que se asigna al contribuyente en el portal de la agencia virtual.