ene 22

Change a LML

Posted in LML, XML

Cambia a LML, si te atreves. 😀

En realidad, éste artículo me refiero a “change” como otra mas de las etiquetas básicas del lenguaje LML, y tiene como misión, cambiar el simbolo utilizado como separador entre el número de nivel y la etiqueta, que por defecto es “:

Cuando escribimos un archivo en LML, se utilizara por defecto el simbolo o caracter especificado en la primera linea junto a la etiqueta begin,

Según esto, en este ejemplo, <0:begin language=”lml> se utilizará el carácter “:” como separador y

según este ejemplo, <0#begin language=”lml> se utilizará el carácter “#” como separador

pero en LML podemos cambiar este simbolo en cualquier momento por otro más adecuado al contenido de nuestro archivo y solo tenemos que indicarlo con la sentencia

<0:change sep=”$”> y la siguiente linea debería ser escrita como,

<0$change sep=”|”> y la siguiente linea debería ser escrita como,

<0|change default> con esta sentencia, el separador en la siguiente linea volverá a ser “:”

Debes notar que el separador indicado en los atributos, debe utilizarse siempre a partir de la siguiente etiqueta.

Veamos un ejemplo de lo aprendido hasta ahora,

<0:begin language=”lml”>

<1:etiqueta-1>valor-1

<2:etiqueta-2>valor-2

<2:etiqueta-3>valor-3

<2:change sep=”|”>

<2|etiqueta-4>valor-4

<2|etiqueta-5>valor-5

<1|change default>

<1:etiqueta-6>valor-6

<0:end>

Y esto no termina aqui …

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Change a LML
ene 22

Begin in LML

Posted in LML, XML

Empecemos con LML y que mejor manera de ver las 2 etiquetas basicas: BEGIN y END

Para construir un archivo bien estructurado en LML, la primera etiqueta de la primera linea debe ser BEGIN,

Debemos iniciar todos los archivos de la siguiente forma

<0:Begin language=”lml>NULL

con esta etiqueta iniciamos la estructura de nuestro archivo, pero debemos observar, que delante de la etiqueta begin, indicamos el número de nivel correspondiente a dicha etiqueta, el “0“. Y como separador entre el número de nivel y la propia etiqueta, hemos utilizado “:” (dos puntos), y podria utilizarse cualquier otro signo pero explicaremos esto más adelante.

a continuación debes indicar todas las etiquetas necesarias para construir tu archivo LML, pero de eso hablaremos en otro artículo.

Aclarar también que para escribir cada etiqueta, no es necesario utilizar una nueva linea y retorno de carro, pero si es aconsejable, ya que facilita enormemente la lectura a los usuarios. Entendemos que la maquina será capaz de leer el archivo en cualquier condición siempre que siga una estructura apropiada, pero, a veces también resulta imprescindible mirar el contenido con un simple editor de texto. 😉

y para terminar el archivo LML debemos utilizar END

Tiene gracia, si lo que prentendía con LML era eliminar las etiquetas finales del “XML”, porque necesitamos END para construir nuestro archivo LML.

Y tiene una explicación lógica,

1. porque es la única etiqueta que vamos a usar para “cerrar”

2. porque indica el final del archivo, y con esto nos asegurarmos de que ha sido creado o leido correctamente

Finaliza el archivo con

<0:end>NULL

en este caso la etiqueta de Nivel también es “0“, ya que regresamos al nivel inicial para finalizar el archivo.

Asi que, en adelante todos nuestros archivos empezaran y finalizaran según este ejemplo

<0:Begin language=”lml”>

contenido del archivo LML

<0:end>

y sobre el contenido ya hablaremos en otra ocasión.

Create PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Begin in LML
ene 21

Conoce lo básico de LML

Posted in LML, XML

Como casi la mayoría de las ideas, LML surge por una única razón, para trabajar menos, pero esto supone que hay que trabajar más en la idea y desarrollarla para luego trabajar menos en el uso de esa idea, que la idea prospere o no es otro cantar. Pero al margen de ésto, este proyecto me ha permitido ahorrar muchas horas de trabajo, y las que me ahorrará en el futuro.

Y de paso, porque no decirlo, convencerme aún más, de que no podemos resignarnos a lo que conocemos por el mero hecho de que te lo impone la sociedad, o quién quiera que sea el culpable.

Agradezco a todos aquellos que he consultado y me han dado una respuesta ¡sincera!, aunque la respuesta no fuera la que más me apetecia oir, pero reconozco que es cierto.

Todos coincideron al decirme: ¡Es un gran trabajo! pero “XML” es el estandar y eso no lo puedes cambiar.

¡Gracias a todos!, y no es mi intención quitarle el puesto a “XML” ya que hay muchos intereses creados detrás de un lenguaje tan conocido, pero crei un día que podía mejorar la sintaxis de XML y lo intenté y aqui os dejo el fruto de este trabajo.

Solo espero que pueda seros de tanta utilidad como ya me ha sido a mi, si es que decidis utilizarlo, y si teneis cualquier duda, no tendre inconveniente en asesorar a los que decidan usarlo en sus proyectos.

empezamos a conocer LML  ¡ya! …

Create PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Conoce lo básico de LML
dic 15

eFactura en LML y XML

Posted in LML, XML

Si aún no has comprobado el ejemplo anterior, aqui te dejo los ejemplos completos para que puedas verlo por ti mismo,

eFactura en XML: eFactura en LML:
<Cabecera>
<VersionCodificacion>VERSION
</VersionCodificacion>
<Modalidad>MODALIDAD
</Modalidad>
<TipoEmisorFactura>TIPO-EMISOR
</TipoEmisorFactura>
<Lote>
<IdentificadorLote>ID-LOTE
</IdentificadorLote>
<NumeroTotalFacturas>NRO-FACTURAS
</NumeroTotalFacturas>
<TotalFacturas>
<ImporteTotal>IMP-TOTAL
</ImporteTotal>
</TotalFacturas>
<ImporteTotal>IMP-TOTAL
</ImporteTotal>
</TotalAPagar>
<ImporteTotal>IMP-TOTAL
</ImporteTotal>
</TotalAEjecutar>MONEDA-FACT
</MonedaFacturacion>
</TotalFacturas>
</Lote>
<Emisor>
<IdentificacionFiscal>
<TipoPersona>TIPO-EMISOR
</TipoPersona>
<TipoResidencia>TIPO-RESIDENCIA
</TipoResidencia>
<NumeroDocumento>NUMERO-DOC
</NumeroDocumento>
</NumeroDocumento>
<Nombre>NOMBRE
</Nombre>
<PrimerApellido>1-APELLIDO
</PrimerApellido>
<DireccionNacional>
<Direccion>DIRECCION
</Direccion>
<CP>C.P.
</CP>
<Poblacion>POBLACION
</Poblacion>
<Provincia>PROVINCIA
</Provincia>
<CodigoPais>COD-PAIS
</CodigoPais>
</CodigoPais>
</DireccionNacional>
</Emisor>
<IdentificacionFiscal>
<TipoPersona>TIPO-EMISOR
</TipoPersona>
<TipoResidencia>TIPO-RESIDENCIA
</TipoResidencia>
<NumeroDocumento>NUMERO-DOC
</NumeroDocumento>
</NumeroDocumento>
<Centro>
<Numero>NUMERO
</Numero>
<DireccionNacional>
<Direccion>DIRECCION
</Direccion>
<CP>C.P.
</CP>
<Poblacion>POBLACION
</Poblacion>
<Provincia>PROVINCIA
</Provincia>
<CodigoPais>COD-PAIS
</CodigoPais>
</CodigoPais>
</DireccionNacional>
</Centros>
<RazonSocial>RAZON-SOCIAL
</RazonSocial>
<DireccionNacional>
<Direccion>DIRECCION
</Direccion>
<CP>C.P.
</CP>
<Poblacion>POBLACION
</Poblacion>
<Provincia>PROVINCIA
</Provincia>
<CodigoPais>COD-PAIS
</CodigoPais>
</CodigoPais>
</DireccionNacional>
</Receptor>
</Sujetos>
<Factura>
<CabeceraFactura>
<NumeroFactura>NRO-FACTURA
</NumeroFactura>
<SerieFactura>SERIE-FACTURA
</SerieFactura>
<TipoDocumentoFactura>TIPO-DOC
</TipoDocumentoFactura>
<Clase>CLASE
</Clase>
</Clase>
<FechaExpedicion>FECHA-EXPED
</FechaExpedicion>
<MonedaExpedicion>MONEDA-EXPED
</MonedaExpedicion>
<MonedaImpuesto>MONEDA-IMP
</MonedaImpuesto>
</MonedaImpuesto>
<Impuesto>
<ClaseImpuesto>CLASE-IMP
</ClaseImpuesto>
<PorcentajeImpuesto>PORC-IMP
</PorcentajeImpuesto>
<BaseImponible>
<ImporteTotal>BASE-IMP
</ImporteTotal>
</BaseImponible>
<ImporteTotal>BASE-IMP
</ImporteTotal>
</Cuota>
</BaseImponible>
</ImpuestosRepercutidos>
<TotalImporteBruto>IMPORTE-BRUTO
</TotalImporteBruto>
<DescuentosGenerales>
<Descuento>
<DescripcionDescuento>DESCR-DTO
</DescripcionDescuento>
<PorcentajeDescuento>PORC-DTO
</PorcentajeDescuento>
<ImporteDescuento>IMPORTE-DTO
</ImporteDescuento>
</ImporteDescuento>
</DescuentosGenerales>TOTAL-DTOS
</TotalDescuentosGenerales>
<TotalImporteBrutoAntesImpuestos>

TOTAL-BRUTO
</TotalImporteBrutoAntesImpuestos>
<TotalImpuestosRepercutidos>TOTAL-IMP
</TotalImpuestosRepercutidos>
<TotalImpuestosRetenidos>TOTAL-RET
</TotalImpuestosRetenidos>
<TotalFactura>TOTAL-FACT
</TotalFactura>
<TotalAnticipos>TOTAL-ANTIC
</TotalAnticipos>
<TotalAPagar>TOTAL-PAGAR
</TotalAPagar>
<TotalAEjecutar>TOTAL-EJECUTAR
</TotalAEjecutar>
</TotalAEjecutar>
<Detalle>
<ExpedienteContratacionReceptor>

EXPED-CONTRA
</ExpedienteContratacionReceptor>
<DescripcionDetalle>DESCR-DETALLE
</DescripcionDetalle>
<Cantidad>CANTIDAD
</Cantidad>
<PrecioUnitarioSinImpuestos>PRECIO-UD
</PrecioUnitarioSinImpuestos>
<CosteTotal>COSTE
</CosteTotal>
<ImporteBruto>IMP-BRUTO
</ImporteBruto>
<ImpuestosRepercutidos>
<Impuesto>
<ClaseImpuesto>IVA
</ClaseImpuesto>
</Impuesto>
</ImpuestosRepercutidos>FECHA-OPER
</FechaOperacion>
</ImpuestosRepercutidos>
</Detalles>
<Vencimiento>
<FechaVencimiento>FECHA-VTO
</FechaVencimiento>
<ImporteVencimiento>IMP-VTO
</ImporteVencimiento>
<FormaPago>FORMA-PAGO
</FormaPago>
<CuentaAbono>
<NumeroCuentaIBAN>CTA-IBAN
</NumeroCuentaIBAN>
<EntidadFinanciera>NOMBRE-BANCO
</EntidadFinanciera>
</EntidadFinanciera>
</CuentaAbono>
</DatosCobro>
<DatosAdicionales>
<ObservacionesFactura>
<Observacion>OBSERVACIONES
</Obserbacion>
</ObservacionesFactura>
</DatosAdicionales>
</Factura>
</Facturas>

<0:Begin language=”lml”>
<1:Cabecera>
<2:VersionCodificacion>VERSION
<2:Modalidad>MODALIDAD
<2:TipoEmisorFactura>TIPO-EMISOR
<2:Lote>
<3:IdentificadorLote>ID-LOTE
<3:NumeroTotalFacturas>NRO-FACTURAS
<3:TotalFacturas>
<4:ImporteTotal>IMP-TOTAL
<3:TotalAPagar>
<4:ImporteTotal>IMP-TOTAL
<3:TotalAEjecutar>
<4:ImporteTotal>IMP-TOTAL
<3:MonedaFacturacion>MONEDA-FACT
<1:Sujetos>
<2:Emisor>
<3:IdentificacionFiscal>
<4:TipoPersona>TIPO-EMISOR
<4:TipoResidencia>TIPO-RESIDENCIA
<4:NumeroDocumento>NUMERO-DOC
<3:PersonaFisica>
<4:Nombre>NOMBRE
<4:PrimerApellido>1-APELLIDO
<4:DireccionNacional>
<5:Direccion>DIRECCION
<5:CP>C.P.
<5:Poblacion>POBLACION
<5:Provincia>PROVINCIA
<5:CodigoPais>COD-PAIS
<2:Receptor>
<3:IdentificacionFiscal>
<4:TipoPersona>TIPO-EMISOR
<4:TipoResidencia>TIPO-RESIDENCIA
<4:NumeroDocumento>NUMERO-DOC
<3:Centros>
<4:Centro>
<5:Numero>NUMERO
<5:DireccionNacional>
<6:Direccion>DIRECCION
<6:CP>C.P.
<6:Poblacion>POBLACION
<6:Provincia>PROVINCIA
<6:CodigoPais>COD-PAIS
<3:PersonaJuridica>
<4:RazonSocial>RAZON-SOCIAL
<4:DireccionNacional>
<5:Direccion>DIRECCION
<5:CP>C.P.
<5:Poblacion>POBLACION
<5:Provincia>PROVINCIA
<5:CodigoPais>COD-PAIS
<1:Facturas>
<2:Factura>
<3:CabeceraFactura>
<4:NumeroFactura>NRO-FACTURA
<4:SerieFactura>SERIE-FACTURA
<4:TipoDocumentoFactura>TIPO-DOC
<4:Clase>CLASE
<3:EmisionFactura>
<4:FechaExpedicion>FECHA-EXPED
<4:MonedaExpedicion>MONEDA-EXPED
<4:MonedaImpuesto>MONEDA-IMP
<3:ImpuestosRepercutidos>
<4:Impuesto>
<5:ClaseImpuesto>CLASE-IMP
<5:PorcentajeImpuesto>PORC-IMP
<5:BaseImponible>
<6:ImporteTotal>BASE-IMP
<5:Cuota>
<6:ImporteTotal>BASE-IMP
<3:TotalesFactura>
<4:TotalImporteBruto>IMPORTE-BRUTO
<4:DescuentosGenerales>
<5:Descuento>
<6:DescripcionDescuento>DESCR-DTO
<6:PorcentajeDescuento>PORC-DTO
<6:ImporteDescuento>IMPORTE-DTO
<4:TotalDescuentosGenerales>TOTAL-DTOS
<4:TotalImporteBrutoAntesImpuestos>

TOTAL-BRUTO
<4:TotalImpuestosRepercutidos>TOTAL-IMP
<4:TotalImpuestosRetenidos>TOTAL-RET
<4:TotalFactura>TOTAL-FACT
<4:TotalAnticipos>TOTAL-ANTIC
<4:TotalAPagar>TOTAL-PAGAR
<4:TotalAEjecutar>TOTAL-EJECUTAR
<3:Detalles>
<4:Detalle>
<5:ExpedienteContratacionReceptor>

EXPED-CONTRA
<5:DescripcionDetalle>DESCR-DETALLE
<5:Cantidad>CANTIDAD
<5:PrecioUnitarioSinImpuestos>PRECIO-UD
<5:CosteTotal>COSTE
<5:ImporteBruto>IMP-BRUTO
<5:ImpuestosRepercutidos>
<6:Impuesto>
<7:ClaseImpuesto>IVA
<5:FechaOperacion>FECHA-OPER
<3:DatosCobro>
<4:Vencimiento>
<5:FechaVencimiento>FECHA-VTO
<5:ImporteVencimiento>IMP-VTO
<5:FormaPago>FORMA-PAGO
<5:CuentaAbono>
<6:NumeroCuentaIBAN>CTA-IBAN
<6:EntidadFinanciera>NOMBRE-BANCO
<3:DatosAdicionales>
<4:ObservacionesFactura>
<5:Observacion>OBSERV
<0:end>

esto es solo un ejemplo, hay otros mas sencillos pero también los hay mas complicados, y por desgracia, cuando los ficheros tienen más de 50 kb no resultan tan faciles de parsear, a menos que tengas conocimientos de C++ o PHP,

¿aún tienes dudas?

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en eFactura en LML y XML
dic 15

ejemplo de LML vs XML

Posted in LML, XML

eFactura en XML y LMLMira y observa detenidamente la imagen, en ella solo se muestran unas lineas de la “eFactura” que podemos descargar de la A.E.A.T.

Observa el tamaño del archivo XML (en la 1ª columna) y del archivo LML (en la 2ª columna), ¿ves alguna diferencia?

en las dos columnas se muestra el mismo texto, una porción de la “eFactura”, pero hay muchas diferencias, si analizamos los dos ejemplos:

– El codigo de la eFactura en LML ocupa 3Kb y en XML ocupa 5kb, casi un 40% de diferencia.

– Es por tanto, mas rápido de leer y parsear por cualquier aplicación.

Pero eso no es todo, si no hubiera marcado en color rojo las etiquetas finales, sería bastante complicado saber donde comienza y donde acaba cada etiqueta.

En cambio podras identificar claramente y a simple vista las diferentes etiquetas del ejemplo en LML (en la 2ª columna) a pesar de que no hay etiquetas finales, esto no seria viable en un XML, y si no lo crees, borra todas las etiquetas “</etiqueta>” de tu ejemplo y luego procesa el archivo. En el mejor de los casos, obtendras un error.

Si, si, ya se que XML es un estandar, y que es cojonudo para comunicar datos con cualquier aplicación, y no pretendo cambiar eso, pero si las aplicaciones que tienes que comunicar son propias o puedes acceder al codigo de las mismas, ¿no crees que puede ser mas eficaz, veloz y seguro?

No pretendo que creais lo que os digo, solo os comento que, en los dos últimos años, desde que desarrolle este lenguaje de etiquetas, lo he utilizado en todos mis proyectos y aún no me ha fallado.

– he facilitado la exportación e importación de cientos de archivos y cientos de miles de lineas de texto

– he reducido las horas de programación en casi un 70% en procesos dedicados a importar y exportar datos.

– he disminuido los errores cometidos en los procesos en un 90% y la mayoría de ellos funcionan correctamente desde la 1ª ejecución

– en definitiva, algo que odiaba tanto como realizar importaciones de datos en masa, se ha convertido casi en un juego de niños y generar el archivo a exportar es mas sencillo si cabe.

No se trata de cambiar lo que ya hay, pero si has de comenzar con un proyecto nuevo, o hay algún proyecto que se te resiste especialmente, ¿no crees que deberías pensarlo?

¡un caramelo es un caramelo! pero, ¿y si le ponemos un palo? 😉

PDF Creator    Enviar artculo en formato PDF   
comments: 3 »
dic 15

LML vs. XML

Posted in HTML, LML, XML

LML vs. XML¿Qué es LML?,

se trata de un nuevo lenguaje de etiquetas y cuenta con numerosas ventajas frente a XML:

  • ocupa entre un 30% y 40% menos que un archivo XML
  • es bastante mas rápido de procesar (entre un 30% y 40%)
  • puede ser leído e interpretado por cualquier usuario a simple vista
  • no necesita etiquetas de cierre de XML y no pierde efectividad
  • es mas fácil de leer y elaborar que el propio XML

y un inconveniente bastante grande:

  • no se trata de un estándar

Si aún quieres conocer mas sobre LML , puedes volver a visitar este blog y te lo contaré, o también puedes conformarte con lo que conoces.

continuará…

PDF Creator    Enviar artculo en formato PDF   
comments: Comentarios desactivados en LML vs. XML