La Comunidad de Desarrolladores WAP
@ Contacta con nosotros
  .WMLClub


APRENDIZAJE
- Tutoriales
- Código fuente / Demos
- FAQS
- Configuración móviles
- Demos en WAP

HERRAMIENTAS
- Programas / Download
- Creación de contenidos

ARCHIVO
- FAQS
- Terminales WAP
- Documentos
- Artículos
- Noticias
- Links
- Libros
- Índice WAP

    CÓDIGO FUENTE/DEMOS

    WML a partir de WML

    Estoy tratando de armar un archivo wml a partir de un xml, usando una xsl. Ahora, el problema que tengo es que no me reconoce el código como wml, que es bastante lógico.

    El problema que pude percibir, es que al estar usando un stylesheet xml, busca la dtd del xsl y no puedo usar la dtd de wml, lo que quiero saber, es si se puede usar 2 dtd, o unirlas en todo caso.

    Leandro Andres Kitaura

     


    Tengo entendido que no es posible usar dos DTD a la vez. Para solucionar el problema en el XSL debes incluir los tags iniciales y finales típicos. Entre estos SÓLO debes incluir el contenido del bloque <wml>...</wml>:

    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/">
    <wml>
    .....
    .....
    </wml>
    </xsl:template>
    </xslstylesheet>

    Si estas utilizando el objeto DOM en ASP para desplegar WML, antes de escribir en el browser la fusión del XML con el XSL debes asignarla a un string y agregarle el header de WML para luego escribir el resultado generado por la fusión:

    'Genera WML
    set xmlObj = Server.CreateObject("MSXML.DOMDocument")
    xmlObj.async = true
    xmlObj.loadXML(XML)

    set xslObj = Server.CreateObject("MSXML.DOMDocument")
    xslObj.async = false
    xslObj.load(XSL)

    'Mezcla XML con WML
    strData = "<xml version '1.0'>"
    strData = strData & "<!DOCTYPE wml PUBLIC'-//WAPFORUM//DTD WML 1.1//EN'
    'http://www.wapforum.org/DTD/wml -1.1.xml'>"
    strData = strData & xmlObj.transformNode(xslObj)

    'Despliega WML
    Response.Write strData


    La eficiencia de utilizar plantillas XSL a partir de datos en XML se sigue manteniendo debido a que antes de hacer el RESPONSE.WRITE se hace sólo uso del interprete del servidor.

    Patricio Morales



    Yo estoy tambien haciendo un proyecto con esos lenguajes y si que se reconoce el wml aunque sea generado mediante transformaciones xsl de xml. El problema puede surguirte a la hora de enviar tu respuesta al browser ya que si la generas como yo a partir de una pagina ASP (supongo que con las PHP de apache sera parecido) tienes que indicarle el tipo mime de la respuesta mediante el comando(Al menos en ASP) Response.ContentType = "text/vnd.wap.wml". O sea que antes de enviar la respuesta (Supongo que generada mediante una transformación XSLT de la pagina de contenidos en XML). Por si eso no te sirve te envio el formato que tienen mis plantillas XSL:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
    doctype-public="-//WAPFORUM//DTD WML 1.1//EN"
    doctype-system="http://www.wapforum.org/DTD/wml_1.1.xm"/> <xsl:template match = "/" >
    <wml>
    .....Todas las transformaciones


    </wml>
    </xsl:template>
    </xsl:stylesheet>

    Las tres primeras lineas son necesarias para que :
    1ª.- El procesador XML reconozca la plantilla que esta utilizando(Diria que es una instrucción de las que llaman Processing instruction, que no se todavia muy bien para que sirven)
    2ª.- Esta lo que hace es añadir a la respuesta la primera linea que tenemos en esta pagina. O sea que le mete el <?xml...?>que ves en la primera linea de la plantilla a la respuesta wml, ya que al ser wml un subconjunto de xml esta tiene que tener ese encabezado.
    3ª.- Esta tercera linea sirve para que al hacer la transformación se genere el tag del DTD a utilizar(Quizas es esto lo unico que necesitavas y te estoy clavando todo el rollo pero bueno). Esta linea genera el codigo:
    <!DOCTYPE wml PUBLIC"-//WAPFORUM//DTD WML 1.1//EN"
    "http://www.wapforum.org/DTD/wml_1.1.xml">

    que es la que le indica el DTD que tiene que utilizar.

    Despues ya esta lo del inicio de la transformacion al encontrar el nodo raiz,etc... Bueno que ya me salgo de la pregunta. A lo que preguntas... pues es diferente el DTD de WML (Pagina generada) del de XSL pagina que tienes guardada en el servidor.

    Albert Andrés Coll