Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   transformación de XSL con DOCTYPE Entity's (http://www.forosdelweb.com/f14/transformacion-xsl-con-doctype-entitys-142496/)

pepetu 18/07/2003 05:04

transformación de XSL con DOCTYPE Entity's
 
A ver si alguien me puede echar un cable ...!

Tengo un códgigo XSL parecido a esto:

"
--- ejemplo.xsl ---
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
<!ENTITY amp "&">
<!ENTITY NL "<xsl:text>&#xa;</xsl:text>">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="text" media-type="text" encoding="ISO-8859-1"/>

<xsl:template match="root">

...etc ...

</xsl:template>

</xsl:stylesheet>
"

Utilizo las librerías de MSXML2 para la transformación de un
código XML a través de éste XSL de la siguiente forma :

"
Set xmlOrigen = New MSXML2.DOMDocument40
xmlOrigen.async = False
xmlOrigen.Load ("c:\ejemplo.xml")

Set xslPlantilla = New MSXML2.FreeThreadedDOMDocument40
xslPlantilla.async = False
xslPlantilla.Load ("c:\ejemplo.xsl")

Set xslTemplate.stylesheet = xslPlantilla
Set xslProcessor = xslTemplate.createProcessor

xslProcessor.input = xmlOrigen
xslProcessor.Transform
"

Hasta aquí ... de puta madre (acepta parámetros y todo) excepto por el sistema de definir
los ENTITY's que tengamos ... por la causa que sea, parece que para los XSL "normales" no hay
ningún problema, pero parece que no trague cuando éstos llevan definidos unos ENTITY's.

El error que pone es "The stylesheet does not contain a document element.
The stylesheet may be empty, or it may not be a well-formed XML document."

Pero este XSL es correcto, de hecho no hay ningún problema al hacer las transformaciones
a través del cygwin !!!

Si a alguien le suena de qué puede ir esto ... !¿?!¿!?

Zokor 18/07/2003 11:59

Así a primera vista me resulta raro ver como tienes definida la entidad <!ENTITY NL "<xsl:text> </xsl:text>">

Quizá el procesador lo esté interpretando como etiquetas anidadas, y por eso te dé error ya que no están permitidas. Prueba a quitar esa definición de entidad a ver que tal. No estoy seguro de que así te vaya porque nunca había visto este tipo de definición de entidad y no sé si funciona. Ya nos dices algo.

Saludos

pepetu 21/07/2003 01:42

Hola Zokor ! Gracias por contestar ...! ;)

El código no se ha "copy-pasteado" bien ... es asÍ :

<!ENTITY NL "<xsl:text>& # x a;</xsl:text>">

La cuestión es que he quitado todos los Entity uno a uno y tampoco funciona, únicamente cuando quito todo el DOCTYPE entero, funciona ... y claro ! no es cuestión ... ;P

Hasta Ahora !

Zokor 23/07/2003 00:47

Pues ni idea, pero la XSL parece estar bien. Debe ser tema del procesador. Quizá haga falta establecer alguna propiedad o algo para que interprete las entidades. Si después de todo te sigue sin salir, quizá deberías probar con otra librería.

Suerte

Helbira 16/05/2005 02:57

Coloca las entidades en un DTD
 
Has probado a definir las entidades en un fichero aparte?

Creo recordar que las entidades las puedes meter en un DTD y luego linkas este DTD en tu XSLT.

Besos

Helbira 16/05/2005 02:58

Oops!... veo que este post es un poco antiguo... es que llegué hasta él a través de Google... ;P


La zona horaria es GMT -6. Ahora son las 04:02.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.