Página 1 de 1
Generar la cadena original tomando como input el archivo XML
Publicado: Mié Jun 06, 2012 7:53 pm
por Halcon Divino
Una forma que se me ocurre para construir la cadena original es leer o extractar todos los valores de los atributos del archivo XML y manualmente formar la cadena original deacuerdo al anexo20. QUE GORRO !!!
Hay otra manera mas facil y rapida ??? ... y para que sirve los Archivos de estructura de la Cadena original ""cadenaoriginal 3 2.xslt"" ??? con esto no genero la cadena original mas fasilmente y de ser así como lo aria ???
Saludos
Halcón Divino.
Re: Generar la cadena original tomando como input el archivo
Publicado: Mié Jun 06, 2012 8:22 pm
por Dado
Pues aqui en el foro publique hace un chorro como hacerlo en Delphi
Y otra forma es usando el xsltproc con el archivo que mencionas
Ya sabes....busca "xsltproc"
Re: Generar la cadena original tomando como input el archivo
Publicado: Jue Jun 07, 2012 9:36 am
por naringas
Una manera fácil y rápida de hacerlo utilizando, precisamente, el archivo cadenaoriginal_3_2.xslt es agregando la linea siguiente en el segundo renglón del archivo XML:
Código: Seleccionar todo
<?xml-stylesheet type="text/xsl" href="cadenaoriginal_3_2.xslt"?>
De esta manera quedaria así (ejemplo con CFD):
Código: Seleccionar todo
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cadenaoriginal_2_2.xslt"?>
<Comprobante .... />
Naturalmente para esto hay que poner el archivo .xslt en el mismo directorio, o tal vez poner la ruta completa al archivo en el servidor del SAT en el atributo href.
Finalmente hay que arrastrar este archivo ligeramente modificado al Internet Explorer (en chrome no sirve así directo del disco duro). Y listo, cadena original.
El único "detalle" es que en IE sale en un solo renglón.
Re: Generar la cadena original tomando como input el archivo
Publicado: Jue Jun 07, 2012 4:58 pm
por Halcon Divino
LISTO YA PUDE GENERAR LA CADENA !!!! ... Esta refasil de haber sabido desde el inicio de mis desarrollos la hubiera aplicado.
Aquí les como se hace
Para C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Xsl;
string ArchXSLT = @"C:\Validador\cadenaoriginal_3_0.xslt";
string ArchXML = @"C:\Validador\XNA0101167H0_A_0269_Timbradov30.XML";
string ArchCadena = @"C:\Validador\CadenaOriginal.Txt";
XslCompiledTransform transformador = new XslCompiledTransform();
transformador.Load(ArchXSLT);
transformador.Transform(ArchXML, ArchCadena);
Para VB
Dim transformador As New Xml.Xsl.XslCompiledTransform()
transformador.Load(empresa("ruta") & "\XSLTs\cadenaoriginal_TFD_1_0.xslt")
transformador.Transform(pathXml, fileCadena)
Para Delphi
Var
Cadena:String;
begin
XSLPageProducer1.FileName := 'C:\CFD\xml\cadenaoriginal_2_0.xslt';
XSLPageProducer1.XMLData := XMLDoc;
Cadena:= XSLPageProducer1.Content;
Saludos
Halcón Divino
Re: Generar la cadena original tomando como input el archivo
Publicado: Jue Ago 09, 2012 4:09 pm
por mdorantes
En este caso ArchXSLT...vendría siendo la versión que se baja del SAT?... en mi caso entonces seria versión 3.2...
el string ArchXML.. viene siendo?... y de donde puedo sacarlo?
y el string ArchCadena... que es?..
podrías porfavor explicarme?...
Gracias...
Re: Generar la cadena original tomando como input el archivo
Publicado: Lun Ago 13, 2012 2:20 pm
por jasistemas
string ArchXSLT = @"C:\Validador\cadenaoriginal_3_0.xslt";
string ArchXML = @"C:\Validador\XNA0101167H0_A_0269_Timbradov30.XML";
string ArchCadena = @"C:\Validador\CadenaOriginal.Txt";
XslCompiledTransform transformador = new XslCompiledTransform();
transformador.Load(ArchXSLT);
transformador.Transform(ArchXML, ArchCadena);
Por lo que se aprecia:
archXSLT es el archivo de transformacion (XSLT) que se usa para PROCESAR archivos .XML en base a los nodos.
archXML es el archivo con tu XML ya armado (obviamente sin el nodo sello ya q todavia estas generando la cadena original.
archCadena: Es el archivo donde se depositara la CADENA ORIGINAL resultante de "parsear" el XML con el XSLT.
Otra opcion era NO grabar un archivo de texto, sino recuperar la cadena en una variable de texto como resultado de la funcion TRANSFORM (toString), pero ya es cuestion de cada quien.
Para q te des una idea, prueba a INCLUIR esto con NOTEPAD directo en tu XML en la parte superior y veras como al intentar abrirlo.. te mostrara la CADENA ORIGINAL!!:
<?xml-stylesheet type="text/xsl" href="cadenaoriginal_2_2.xslt"?><?xml version="1.0" encoding="UTF-8"?>
Re: Generar la cadena original tomando como input el archivo
Publicado: Jue Sep 26, 2013 3:37 pm
por Neto2004
Pueden ayudar pasando el codigo desde 0 y las referencia ya que e buscado , el unico paso que me falta es hacer al transofmacion de xslt desde visual basic 6
Gracias y saludos ..
Re: Generar la cadena original tomando como input el archivo
Publicado: Jue Sep 26, 2013 9:57 pm
por mauricio
Una sencilla busqueda en este foro (y en otros) y tendrás varias respuestas concretas a lo que quieres...