Transformando XML con XSLT
==========================

### Introducción

La separación del contenido y la presentación es una característica clave en el diseño de XML. La estructura de un documento XML esta diseñada para reflejar y clarificar relaciones importantes entre los aspectos individuales del contenido en si mismo, sin preocuparse de la forma en que posteriormente se visualizaran los datos. Una estructuración inteligente es particularmente importante cuando cada día se realizan más conexiones entre máquinas muy diferentes a través de la red.

Finalmente, gran parte del contenido almacenado en los documentos XML será mostrado al lector (humano). Dado que el navegador proporciona un interfaz conocido y flexible al usuario, es el mecanismo ideal para presentar los contenidos en XML. Construido él mismo usando numerosas tecnologías XML, Mozilla incluye todos los mecanismos necesarios para procesar tanto los documentos XML originales, como las hojas de transformación utilizadas para formatearlo y mostrarlo en HTML. Al mismo tiempo se reduce la carga del servidor, dado que el procesamiento se produce en el lado del cliente.

Actualmente, Gecko (el motor de visualización que utilizan Mozilla y Firefox) soporta dos tipos de hojas de estilo para XML. Para el control básico de la apariencia (como fuentes, colores, posición, etc...) Gecko utiliza CSS, parecido al DHTML. Todo CSS1 y la mayor parte de CSS2 están soportados. El soporte para el estándar CSS3 está en desarrollo. Para más información sobre CSS, véase Eric Meyer's CSS pages. Para una introducción de CSS1 y Netscape, véase Browser Central page.

El segundo tipo de hojas de transformación que soporta Gecko son las hojas de estilo XSLT, eXtensible Stylesheet Language/Transform. XSLT permite al autor de una hoja de estilo transformar un documento original XML de dos formas: manipulando y ordenando el contenido (incluyendo una reordenación general de éste si es necesario), y transformando el contenido en distintos formatos (en el caso de Netscape, se convierte al vuelo en HTML para ser mostrado por el navegador).

### Referencia de XSLT/XPath

#### Elementos

* xsl:apply-imports *(soportado)*
* xsl:apply-templates *(soportado)*
* xsl:attribute *(soportado)*
* xsl:attribute-set *(soportado)*
* xsl:call-template *(soportado)*
* xsl:choose *(soportado)*
* xsl:comment *(soportado)*
* xsl:copy *(soportado)*
* xsl:copy-of *(soportado)*
* xsl:decimal-format *(soportado)*
* xsl:element *(soportado)*
* xsl:fallback *(no soportado)*
* xsl:for-each *(soportado)*
* xsl:if *(soportado)*
* xsl:import *(soportado en la mayoría de casos)*
* xsl:include *(soportado)*
* xsl:key *(soportado)*
* xsl:message *(soportado)*
* xsl:namespace-alias *(no soportado)*
* xsl:number *(parcialmente soportado)*
* xsl:otherwise *(soportado)*
* xsl:output *(parcialmente soportado)*
* xsl:param *(soportado)*
* xsl:preserve-space *(soportado)*
* xsl:processing-instruction
* xsl:sort *(soportado)*
* xsl:strip-space *(soportado)*
* xsl:stylesheet *(parcialmente soportado)*
* xsl:template *(soportado)*
* xsl:text *(parcialmente supported)*
* xsl:transform *(soportado)*
* xsl:value-of *(parcialmente soportado)*
* xsl:variable *(soportado)*
* xsl:when *(soportado)*
* xsl:with-param *(soportado)*

#### Ejes

* ancestor
* ancestor-or-self
* attribute
* child
* descendant
* descendant-or-self
* following
* following-sibling
* namespace *(no soportado)*
* parent
* preceding
* preceding-sibling
* self

#### Funciones

* boolean() *(soportado)*
* ceiling() *(soportado)*
* concat() *(soportado)*
* contains() *(soportado)*
* count() *(soportado)*
* current() *(soportado)*
* document() *(soportado)*
* element-available() *(soportado)*
* false() *(soportado)*
* floor() *(soportado)*
* format-number() *(soportado)*
* function-available() *(soportado)*
* generate-id() *(soportado)*
* id() *(parcialmente soportado)*
* key() *(soportado)*
* lang() *(soportado)*
* last() *(soportado)*
* local-name() *(soportado)*
* name() *(soportado)*
* namespace-uri() *(soportado)*
* normalize-space() *(soportado)*
* not() *(soportado)*
* number() *(soportado)*
* position() *(soportado)*
* round() *(soportado)*
* starts-with() *(soportado)*
* string() *(soportado)*
* string-lenght() *(soportado)*
* substring() *(soportado)*
* substring-after() *(soportado)*
* substring-before() *(soportado)*
* sum() *(soportado)*
* system-property() *(soportado)*
* translate() *(soportado)*
* true() *(soportado)*
* unparsed-entity-url() *(no soportado)*
### Para futuras lecturas

* Libros
* Online
    + El Consorcio del amplio mundo de la Web
    + Portales
    + Artículos
    + Tutoriales/Ejemplos
    + Listas de mails/Grupos de noticias
### Índice

### Información original del documento

* Copyright Information: Copyright © 2001-2003 Netscape. All rights reserved.
* Note: This reprinted article was originally part of the DevEdge site.

Categorías

enlaces interwikis