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
<xs:all>
: Todos los elementos hijos pueden aparecer en cualquier orden.<xs:choice>
: Entre los elementos hijos, solo puede aparecer uno u otro.<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
- Tener bien definido el documento XML.
- Crear una hoja de estilos XSL bien formada.
- 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 dexsl: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 etiquetaxsl: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<
en XML/HTML) - Operador Mayor que:
>
(se escribe>
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>