XSD y XSLT: Estructura y Transformación de Datos XML

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,23 KB

¿Qué es XSD?

XSD (XML Schema Definition) es similar a DTD (Document Type Definition). Define qué elementos puede contener un documento XML, cómo están organizados, qué atributos y de qué tipo pueden tener sus elementos.

Características Principales de XSD

  • Define qué elementos pueden aparecer en un documento XML.
  • Define los atributos de los elementos.
  • Los elementos pueden ser compuestos, indicando qué elementos hijos deben aparecer y en qué orden.
  • Los elementos pueden ser vacíos o pueden incluir texto asociado.
  • Define los tipos de datos que pueden utilizarse en cada elemento o atributo.
  • Define la obligatoriedad y la opcionalidad de elementos y atributos.

Ventajas de XSD

  • Es fácilmente extensible para futuras modificaciones.
  • No es necesario aprender un nuevo lenguaje, puesto que utiliza sintaxis XML.
  • Permite definir de manera clara los tipos de datos.

Tipos de Datos en XSD

  • Simples: Son elementos que se definen por sí mismos y que no tienen elementos hijos.
  • Compuestos: Son todos aquellos que pueden contener atributos propios, otros elementos o atributos.

Tipos de Elementos Simples Comunes

  • xs:string
  • xs:date (formato: dd/mm/yyyy)
  • xs:time
  • xs:dateTime
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:hexBinary

Indicadores de Orden en XSD

  1. <xs:all>: Todos los elementos hijos pueden aparecer en cualquier orden.
  2. <xs:choice>: Entre los elementos hijos, solo puede aparecer uno u otro.
  3. <xs:sequence>: Indica el orden específico en que aparecen los elementos hijos.

Diferencia entre XSD y XSL

XSD: Es un lenguaje esquemático, en el cual se indica la posible estructura y contenido que puede tener un fichero XML.

XSL: Es un lenguaje de programación declarativo, mediante hojas de estilo que pueden transformar el XML.

¿Qué es XSL?

XSL es a XML lo que las hojas de estilo CSS a HTML. Permite tomar pleno control sobre los datos, pudiendo establecer criterios como qué datos ver, en qué orden visualizarlos, establecer filtros y definir formatos de salida para representarlos.

Reglas para Adaptar un XML a un XSL

  1. Tener bien definido el documento XML.
  2. Crear una hoja de estilos XSL bien formada.
  3. Vincular la hoja de estilo XSL al documento XML.

Elementos Básicos de XSLT

  • xsl:for-each: Si se necesita recorrer todos y cada uno de los campos y extraer datos para darles formato, esta etiqueta indica que se recorrerá todo el conjunto de elementos XML.
  • xsl:value-of: Después de xsl:for-each, se necesita extraer el contenido. Para ello, se utiliza esta etiqueta de extracción de elementos. Es la manera más sencilla de realizar un listado completo, formateado y con estilos adecuados.
  • xsl:sort: Sirve para indicar la manera en que se desea ordenar, siempre después de la etiqueta xsl:for-each.

Operadores Condicionales en XSLT

  • xsl:if: Permite obtener fragmentos de plantillas condicionales simples.
  • xsl:choose: Permite establecer múltiples condiciones dentro del recorrido en el XML. Se pueden añadir tantos elementos condicionales como se deseen mediante los elementos <xsl:when> y <xsl:otherwise> para establecer una condición por defecto.

Operadores Lógicos en XSLT

  • Operador de Igualdad: =
  • Operador de Desigualdad: !=
  • Operador Menor que: < (se escribe &lt; en XML/HTML)
  • Operador Mayor que: > (se escribe &gt; en XML/HTML)

xsl:template

Permite definir sobre qué parte del código XML actuar. Mediante el atributo match, siempre se referencia la raíz del documento XML, sin establecer ramas para componerlo.

Ejemplo de XSLT

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body>
                <table border="1">
                    <tr>
                        <th>Name</th>
                        <th>Address</th>
                        <th>Phone</th>
                    </tr>
                    <xsl:for-each select="customers/customer">
                        <xsl:sort select="state" order="descending"/>
                        <xsl:sort select="name"/>
                        <tr>
                            <td><xsl:value-of select="name"/></td>
                            <td><xsl:value-of select="address"/></td>
                            <td><xsl:value-of select="phone"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

Entradas relacionadas: