![]() |
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>
</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 ... !¿?!¿!? |
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 |
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 ! |
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 |
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 |
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.