[OT] XMLDOM: XSL+XML = Archivo HTML

04/10/2004 - 21:07 por Miguel Gonzalez | Informe spam
Hola gente!

Antes que nada, perdonen el OT...

En una página ASP, tras aplicar una XSL sobre un XML necesito guardar el resultado como un archivo
HTML (no es para internet, sino para grabar los HTMLs en un CD y que el cliente navegue en forma
local en su CDROM).

He intentado dos vías (ambas con problemas):

1) Si guardo el "string" resultante de utilizar "transformNode()" mediante FSO el archivo se guarda
correctamente, salvo que no incluye la codificación original del documento XML y me agrega
automáticamente un "metatag" con la codificación UTF-16. Obviamente, según qué navegadores, ello me
da problemas. Idealmente, necesitaría desactivar la inclusión de dicho "metatag", o bien modificar
la codificación del "metatag" en el momento de invocar el método:

<%string1 = xml1.transformNode(xsl1)%>

2) Si utilizo el método "transformNodeToObject()" y lo envio mediante "Response" al cliente, puedo
comprobar que el "stream" contiene la codificación correcta en el "metatag" agregado, pero no he
encontrado la forma de salvar/guardar dicho "Response" en un archivo.

<%xml1.transformNodeToObject xsl1 Response%>

Alguna idea, recomendación, sugerencia???

Gracias anticipadas!

Saludos!
Miguel

Preguntas similare

Leer las respuestas

#1 Jhonny Vargas P. [MVP]
05/10/2004 - 02:05 | Informe spam
Hola miguel,

Guarda esa respuesta a un archivo de texto con la extensión "HTML" en tu
disco duro, recuerda dar permisos a los usuarios anónimos para crear y
modificar archivos.

Para Guardar un archivo utiliza el objeto FileSystemObject , ejemplo:

Dim objFSO, objStream
Set objFSO = Server.CreateObject("scripting.filesystemobject")

Set objStream = objFSO.CreateTextFile("c:\archivos\archivo.htm")

objStream.Writeline Resultado

Set objStream = Nothing

Set objFSO = Nothing


Saludos,
Jhonny Vargas P.


"Miguel Gonzalez" escribió en el mensaje
news:%

Hola gente!

Antes que nada, perdonen el OT...

En una página ASP, tras aplicar una XSL sobre un XML necesito guardar el
resultado como un archivo
HTML (no es para internet, sino para grabar los HTMLs en un CD y que el
cliente navegue en forma
local en su CDROM).

He intentado dos vías (ambas con problemas):

1) Si guardo el "string" resultante de utilizar "transformNode()" mediante
FSO el archivo se guarda
correctamente, salvo que no incluye la codificación original del documento
XML y me agrega
automáticamente un "metatag" con la codificación UTF-16. Obviamente, según
qué navegadores, ello me
da problemas. Idealmente, necesitaría desactivar la inclusión de dicho
"metatag", o bien modificar
la codificación del "metatag" en el momento de invocar el método:

<%string1 = xml1.transformNode(xsl1)%>

2) Si utilizo el método "transformNodeToObject()" y lo envio mediante
"Response" al cliente, puedo
comprobar que el "stream" contiene la codificación correcta en el "metatag"
agregado, pero no he
encontrado la forma de salvar/guardar dicho "Response" en un archivo.

<%xml1.transformNodeToObject xsl1 Response%>

Alguna idea, recomendación, sugerencia???

Gracias anticipadas!

Saludos!
Miguel
Respuesta Responder a este mensaje
#2 Miguel Gonzalez
05/10/2004 - 11:58 | Informe spam
Hola Jhonny, gracias por contestar.

Creo que no me expresé bien en mi posta anterior. Con el tema de
"guardar" no tengo problema. Con FSO se guarda el archivo.

<%
xml2 = xml1.transformNode(xsl1)
xml2 = Replace(xml2, "UTF-16", "ISO-8859-1")
' ...Y "xml2" se guarda mediante FSO
%>

donde...
xml2 es un string
xml1 es un "Microsoft.DOM" que contiene datos XML
xsl1 es un "Microsoft.DOM" que contiene una hoja XSL
"transformNode()" genera un string con el resultado de aplicar el XSL
sobre el XML.

Sin embargo, este método incorpora un metatag con la codificación de
trabajo del parser XML (UTF-16). De momento lo soluciono mediante un
"Replace()", pero claro, no es la solución definitiva.

En cambio, si utilizo "transformNodeToObject()":

<%
xml1.transformNodeToObject xsl1, Response
%>

Se envia un "stream" al navegador que sí contiene la codificación
correcta. Lo que me gustaría poder hacer es "salvar" el "stream" o
"Response" generado por este método como un archivo HTML.

...Y en eso estoy.

Alguna idea?

Saludos!
Miguel

Jhonny Vargas P. [MVP] wrote:
Hola miguel,

Guarda esa respuesta a un archivo de texto con la extensión "HTML" en tu
disco duro, recuerda dar permisos a los usuarios anónimos para crear y
modificar archivos.

Para Guardar un archivo utiliza el objeto FileSystemObject , ejemplo:

Dim objFSO, objStream
Set objFSO = Server.CreateObject("scripting.filesystemobject")

Set objStream = objFSO.CreateTextFile("c:\archivos\archivo.htm")

objStream.Writeline Resultado

Set objStream = Nothing

Set objFSO = Nothing


Saludos,
Jhonny Vargas P.


"Miguel Gonzalez" escribió en el mensaje
news:%

Hola gente!

Antes que nada, perdonen el OT...

En una página ASP, tras aplicar una XSL sobre un XML necesito guardar el
resultado como un archivo
HTML (no es para internet, sino para grabar los HTMLs en un CD y que el
cliente navegue en forma
local en su CDROM).

He intentado dos vías (ambas con problemas):

1) Si guardo el "string" resultante de utilizar "transformNode()" mediante
FSO el archivo se guarda
correctamente, salvo que no incluye la codificación original del documento
XML y me agrega
automáticamente un "metatag" con la codificación UTF-16. Obviamente, según
qué navegadores, ello me
da problemas. Idealmente, necesitaría desactivar la inclusión de dicho
"metatag", o bien modificar
la codificación del "metatag" en el momento de invocar el método:

<%string1 = xml1.transformNode(xsl1)%>

2) Si utilizo el método "transformNodeToObject()" y lo envio mediante
"Response" al cliente, puedo
comprobar que el "stream" contiene la codificación correcta en el "metatag"
agregado, pero no he
encontrado la forma de salvar/guardar dicho "Response" en un archivo.

<%xml1.transformNodeToObject xsl1 Response%>

Alguna idea, recomendación, sugerencia???

Gracias anticipadas!

Saludos!
Miguel


Respuesta Responder a este mensaje
#3 Jhonny Vargas P. [MVP]
05/10/2004 - 14:46 | Informe spam
Hola Miguel,

Solía colocar lo siguiente en la cabecera de los xsl:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1"/>


Por otra parte en el xml también deberías tener algo similar.
<?xml version="1.0"? encoding="iso-8859-1">


Creo que era así... no recuerdo muy bien... prueba y me cuentas.

Saludos,
Jhonny VArgas P.






"Miguel Gonzalez" escribió en el mensaje
news:
Hola Jhonny, gracias por contestar.

Creo que no me expresé bien en mi posta anterior. Con el tema de
"guardar" no tengo problema. Con FSO se guarda el archivo.

<%
xml2 = xml1.transformNode(xsl1)
xml2 = Replace(xml2, "UTF-16", "ISO-8859-1")
' ...Y "xml2" se guarda mediante FSO
%>

donde...
xml2 es un string
xml1 es un "Microsoft.DOM" que contiene datos XML
xsl1 es un "Microsoft.DOM" que contiene una hoja XSL
"transformNode()" genera un string con el resultado de aplicar el XSL
sobre el XML.

Sin embargo, este método incorpora un metatag con la codificación de
trabajo del parser XML (UTF-16). De momento lo soluciono mediante un
"Replace()", pero claro, no es la solución definitiva.

En cambio, si utilizo "transformNodeToObject()":

<%
xml1.transformNodeToObject xsl1, Response
%>

Se envia un "stream" al navegador que sí contiene la codificación
correcta. Lo que me gustaría poder hacer es "salvar" el "stream" o
"Response" generado por este método como un archivo HTML.

...Y en eso estoy.

Alguna idea?

Saludos!
Miguel

Jhonny Vargas P. [MVP] wrote:
Hola miguel,

Guarda esa respuesta a un archivo de texto con la extensión "HTML" en tu
disco duro, recuerda dar permisos a los usuarios anónimos para crear y
modificar archivos.

Para Guardar un archivo utiliza el objeto FileSystemObject , ejemplo:

Dim objFSO, objStream
Set objFSO = Server.CreateObject("scripting.filesystemobject")

Set objStream = objFSO.CreateTextFile("c:\archivos\archivo.htm")

objStream.Writeline Resultado

Set objStream = Nothing

Set objFSO = Nothing


Saludos,
Jhonny Vargas P.


"Miguel Gonzalez" escribió en el mensaje
news:%

Hola gente!

Antes que nada, perdonen el OT...

En una página ASP, tras aplicar una XSL sobre un XML necesito guardar el
resultado como un archivo
HTML (no es para internet, sino para grabar los HTMLs en un CD y que el
cliente navegue en forma
local en su CDROM).

He intentado dos vías (ambas con problemas):

1) Si guardo el "string" resultante de utilizar "transformNode()" mediante
FSO el archivo se guarda
correctamente, salvo que no incluye la codificación original del documento
XML y me agrega
automáticamente un "metatag" con la codificación UTF-16. Obviamente, según
qué navegadores, ello me
da problemas. Idealmente, necesitaría desactivar la inclusión de dicho
"metatag", o bien modificar
la codificación del "metatag" en el momento de invocar el método:

<%string1 = xml1.transformNode(xsl1)%>

2) Si utilizo el método "transformNodeToObject()" y lo envio mediante
"Response" al cliente, puedo
comprobar que el "stream" contiene la codificación correcta en el


"metatag"
agregado, pero no he
encontrado la forma de salvar/guardar dicho "Response" en un archivo.

<%xml1.transformNodeToObject xsl1 Response%>

Alguna idea, recomendación, sugerencia???

Gracias anticipadas!

Saludos!
Miguel


Respuesta Responder a este mensaje
#4 Miguel Gonzalez
05/10/2004 - 15:53 | Informe spam
Hola Jhonny. Justamente es lo que hago, coloco la codificación a
utilizar en las cabeceras y el parser realiza la transformación
correctamente. El problema es que el método "transformNode()" agrega al
string resultante de la transformación el metatag con la codificación de
trabajo UTF-16, en vez de la que yo especifico en los documentos fuente,
y pese a utilizar en la transformación la codificación que viene
indicada en la fuente: Si cambio la codificación original adrede para
provocar errores de parseo éstos se producen "correctamente"... (¡que
malito soy!).

Gracias por el esfuerzo y saludos!
Miguel


Jhonny Vargas P. [MVP] wrote:
Hola Miguel,

Solía colocar lo siguiente en la cabecera de los xsl:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1"/>


Por otra parte en el xml también deberías tener algo similar.
<?xml version="1.0"? encoding="iso-8859-1">


Creo que era así... no recuerdo muy bien... prueba y me cuentas.

Saludos,
Jhonny VArgas P.






"Miguel Gonzalez" escribió en el mensaje
news:
Hola Jhonny, gracias por contestar.

Creo que no me expresé bien en mi posta anterior. Con el tema de
"guardar" no tengo problema. Con FSO se guarda el archivo.

<%
xml2 = xml1.transformNode(xsl1)
xml2 = Replace(xml2, "UTF-16", "ISO-8859-1")
' ...Y "xml2" se guarda mediante FSO
%>

donde...
xml2 es un string
xml1 es un "Microsoft.DOM" que contiene datos XML
xsl1 es un "Microsoft.DOM" que contiene una hoja XSL
"transformNode()" genera un string con el resultado de aplicar el XSL
sobre el XML.

Sin embargo, este método incorpora un metatag con la codificación de
trabajo del parser XML (UTF-16). De momento lo soluciono mediante un
"Replace()", pero claro, no es la solución definitiva.

En cambio, si utilizo "transformNodeToObject()":

<%
xml1.transformNodeToObject xsl1, Response
%>

Se envia un "stream" al navegador que sí contiene la codificación
correcta. Lo que me gustaría poder hacer es "salvar" el "stream" o
"Response" generado por este método como un archivo HTML.

...Y en eso estoy.

Alguna idea?

Saludos!
Miguel

Jhonny Vargas P. [MVP] wrote:

Hola miguel,

Guarda esa respuesta a un archivo de texto con la extensión "HTML" en tu
disco duro, recuerda dar permisos a los usuarios anónimos para crear y
modificar archivos.

Para Guardar un archivo utiliza el objeto FileSystemObject , ejemplo:

Dim objFSO, objStream
Set objFSO = Server.CreateObject("scripting.filesystemobject")

Set objStream = objFSO.CreateTextFile("c:\archivos\archivo.htm")

objStream.Writeline Resultado

Set objStream = Nothing

Set objFSO = Nothing


Saludos,
Jhonny Vargas P.


"Miguel Gonzalez" escribió en el mensaje
news:%

Hola gente!

Antes que nada, perdonen el OT...

En una página ASP, tras aplicar una XSL sobre un XML necesito guardar el
resultado como un archivo
HTML (no es para internet, sino para grabar los HTMLs en un CD y que el
cliente navegue en forma
local en su CDROM).

He intentado dos vías (ambas con problemas):

1) Si guardo el "string" resultante de utilizar "transformNode()" mediante
FSO el archivo se guarda
correctamente, salvo que no incluye la codificación original del documento
XML y me agrega
automáticamente un "metatag" con la codificación UTF-16. Obviamente, según
qué navegadores, ello me
da problemas. Idealmente, necesitaría desactivar la inclusión de dicho
"metatag", o bien modificar
la codificación del "metatag" en el momento de invocar el método:

<%string1 = xml1.transformNode(xsl1)%>

2) Si utilizo el método "transformNodeToObject()" y lo envio mediante
"Response" al cliente, puedo
comprobar que el "stream" contiene la codificación correcta en el



"metatag"

agregado, pero no he
encontrado la forma de salvar/guardar dicho "Response" en un archivo.

<%xml1.transformNodeToObject xsl1 Response%>

Alguna idea, recomendación, sugerencia???

Gracias anticipadas!

Saludos!
Miguel







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida