XSL Stylesheet para transformar documento XML a WML

Vea la sección sobre Ant para transformar XML vía "XSL Stylesheets" para aplicar este "XSL Stylesheet" al documento XML.

Si desea observar el documento WML generado abra el simulador WAP en base a la instalación que haya realizado en ambiente.


<?xml version="1.0"?>

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

<!-- La declaración anterior indica que se trata de un documento XML
           utilizando el Namespace para XSL.
	   La utilización de xsl:output permite que sea 
	   enviado el tipo de documento (DTD) en cuestión, este 
	   requerimiento es obligatorio para cualquier 
	   información enviada por medios inalámbricos.  -->

 <xsl:output method="xml" doctype-public="-//WAPFORUM//DTD WML 1.1//EN"
      media-type="text/vnd.wap.wml"
      doctype-system="http://www.wapforum.org/DTD/wml_1.1.xml"
      encoding="ISO-8859-1"/>

<!-- Este primer template indica que al ser encontrado 
        el elemento raíz del documento XML se inicie el contenido de 
	WML el cual es clausurado una vez hayan sido aplicado
	los respectivos templates
       -->

 <xsl:template match="/">
    <wml>

      <xsl:apply-templates/>

    </wml>
 </xsl:template>

        <!--
        En el elemento productos se genera la pantalla
	(CARD) principal del aparato inalámbrico, debido a las
	limitaciones de despliegue se definen tres links (A HREF) 
	hacia otras pantallas (CARD's) que contendrán la 
	información correspondiente, dichos links son generados
	através de un ciclo para XSL.
	 --> 
	

 <xsl:template match="productos">
	<card id="main" title="Informacion de Productos">


	<xsl:for-each select="producto">
	<p>
           <a href="#{nombre}" title="{nombre}">
	       <xsl:value-of select="nombre"/>
	   </a>
	</p>
	</xsl:for-each>

	</card>
	
	<xsl:apply-templates/>

 </xsl:template>


    <!-- Para cada elemento producto se define una pantalla 
            (CARD) la cual es asignada el nombre de acuerdo 
	    a los links definidos anteriormente.
	    Antes de clausurar la pantalla (CARD) para cada 
	    elemento se aplican los templates a los elementos
	    restantes.
	--> 

	
    <xsl:template match="producto">
	<card id="{nombre}" title="{nombre}>
	   <p>
	   <xsl:apply-templates/>
           </p>
	</card>
    </xsl:template>    

    <!-- Imprime el valor del elemento nombre y un link
       (A HREF) hacia la pantalla principal (CARD)
       
       --> 
    

    <xsl:template match="nombre">
         <a title="Principal" href="#main">Regresar...</a><br/> 
         Nombre: <xsl:value-of select="."/> <br/> 
    </xsl:template>

 <!-- Imprime el valor del elemento ubicación --> 

    <xsl:template match="ubicacion">
          Ubicación: <xsl:value-of select="."/> <br/>
          Disponible: <xsl:value-of select="@disponible"/> <br/>
    </xsl:template>


    <!-- Imprime el valor del elemento tiempoentrega -->

    <xsl:template match="tiempoentrega">
          Tiempo de Entrega: <xsl:value-of select="."/> <br/>
    </xsl:template>

    <!-- Imprime el valor del elemento costo, se debe agregar
               el símbolo "$" para escapar el símbolo "$" presente en el 
	       documento XML. (el uso de "$" en WML es reservado para 
	       variables, por lo que enviar un solo "$" resulta en error
        -->  

    <xsl:template match="costo">
	  Costo: $<xsl:value-of select="."/> <br/>
    </xsl:template>

    <!-- Se cierra el elemento raíz del documento XML --> 

</xsl:stylesheet>

Menú Curso

XML y sus Orígenes

Manipulación y Proceso de XML

DOM, SAX y JDOM

Namespaces, Schemas y DTD's

XSL: XSLT, XPath y TraX

XMLRPC y SOAP (Web Services)

Diseño con XMLRPC

Diseño con SOAP .

Apéndice "A" (Procesando XML con parsers).

Apéndice "B" (Validando XML con Schemas y DTD's).

Apéndice "C" (XSL: XPath y "XSL Stylesheets").

Apéndice "D" (XMLRPC: Diseño).

Apéndice "E" (SOAP, WSDL, UDDI y WSIL : Diseño).