Tutorial XML

INICIO XML Introducción XML XML Cómo utilizar Árbol XML Sintaxis XML Elementos XML Atributos XML Espacios de nombres XML Pantalla XML Solicitud Http XML Analizador XML DOM XML XPath XML XML XSLT XQuery XML Enlace X XML Validador XML DTD XML Esquema XML Servidor XML Ejemplos XML Cuestionario XML Certificado XML

XML-AJAX

AJAX Introducción AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

DOM XML

DOM Introducción Nodos DOM Acceso DOM Información del nodo DOM Lista de nodos DOM Atravesando DOM Navegación DOM DOM obtener valores Nodos de cambio de DOM Eliminar nodos DOM Nodos de reemplazo de DOM DOM Crear nodos Agregar nodos DOM Nodos de clonación de DOM Ejemplos de DOM

Tutorial XPath

Introducción a XPath Nodos XPath Sintaxis XPath Ejes XPath Operadores XPath Ejemplos de XPath

Tutorial XSLT

XSLT Introducción Idiomas XSL Transformación XSLT XSLT <plantilla> XSLT <valor-de> XSLT <para-cada> XSLT <ordenar> XSLT <si> XSLT <elegir> Aplicar XSLT XSLT en el cliente XSLT en el servidor XSLT Editar XML Ejemplos de XSLT

Tutorial de XQuery

Introducción a XQuery Ejemplo de XQuery XQuery FLWOR XQuery HTML Términos de XQuery Sintaxis XQuery XQuery Agregar Seleccionar XQuery Funciones XQuery

DTD XML

Introducción a DTD Bloques de construcción DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Ejemplos de DTD

Esquema XSD

XSD Introducción XSD Cómo XSD <esquema> Elementos XSD Atributos XSD Restricciones XSD

Complejo XSD

Elementos XSD XSD vacío Solo elementos XSD Solo texto XSD XSD mixto Indicadores XSD XSD <cualquiera> XSD <cualquieratributo> Sustitución XSD Ejemplo XSD

Datos XSD

Cadena XSD Fecha XSD XSD Numérico Miscelánea XSD Referencia XSD

Servicios web

Servicios XML XML WSDL JABÓN XML XML RDF RSS XML

Referencias

Tipos de nodos DOM Nodo DOM Lista de nodos DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentario DOM DOM XMLHttpSolicitud Analizador DOM Elementos XSLT Funciones XSLT/XPath

XSLT - En el cliente


XSLT se puede utilizar para transformar el documento a XHTML en su navegador.


Una solución JavaScript

En los capítulos anteriores hemos explicado cómo se puede usar XSLT para transformar un documento de XML a XHTML. Hicimos esto agregando una hoja de estilo XSL al archivo XML y dejando que el navegador hiciera la transformación.

Incluso si esto funciona bien, no siempre es deseable incluir una referencia de hoja de estilo en un archivo XML (por ejemplo, no funcionará en un navegador que no admita XSLT).

Una solución más versátil sería utilizar JavaScript para realizar la transformación.

Mediante el uso de un JavaScript, podemos:

  • hacer pruebas específicas del navegador
  • use diferentes hojas de estilo de acuerdo con el navegador y las necesidades del usuario

¡Esa es la belleza de XSLT! Uno de los objetivos de diseño de XSLT era hacer posible la transformación de datos de un formato a otro, compatible con diferentes navegadores y diferentes necesidades de los usuarios.


El archivo XML y el archivo XSL

Mira el documento XML que has visto en los capítulos anteriores:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
</catalog>

Ver el archivo XML .

Y la hoja de estilo XSL adjunta:

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title" /></td>
      <td><xsl:value-of select="artist" /></td>
    </tr>
    </xsl:for-each>
  </table>
</xsl:template>

</xsl:stylesheet>

Ver el archivo XSL .

Tenga en cuenta que el archivo XML no tiene una referencia al archivo XSL.

IMPORTANTE: La oración anterior indica que un archivo XML podría transformarse utilizando muchas hojas de estilo XSL diferentes.



Transformación de XML a XHTML en el navegador

Aquí está el código fuente necesario para transformar el archivo XML a XHTML en el cliente:

Ejemplo

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
  {
  xhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
else
  {
  xhttp = new XMLHttpRequest();
  }
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
  {
  ex = xml.transformNode(xsl);
  document.getElementById("example").innerHTML = ex;
  }
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml, document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>

Sugerencia: si no sabe cómo escribir JavaScript, estudie nuestro tutorial de JavaScript .

Ejemplo explicado:

La función loadXMLDoc() hace lo siguiente:

  • Crear un objeto XMLHttpRequest
  • Use los métodos open() y send() del objeto XMLHttpRequest para enviar una solicitud a un servidor
  • Obtener los datos de respuesta como datos XML

La función displayResult() se usa para mostrar el archivo XML al estilo del archivo XSL:

  • Cargar archivos XML y XSL
  • Probar qué tipo de navegador tiene el usuario
  • Si Internet Explorer:
    • Use el método transformNode() para aplicar la hoja de estilo XSL al documento xml
    • Configure el cuerpo del documento actual (id="example") para que contenga el documento xml con estilo
  • Si otros navegadores:
    • Crear un nuevo objeto XSLTProcessor e importarle el archivo XSL
    • Use el método transformToFragment() para aplicar la hoja de estilo XSL al documento xml
    • Configure el cuerpo del documento actual (id="example") para que contenga el documento xml con estilo