XSLT - En el lado del servidor
Debido a que no todos los navegadores son compatibles con XSLT, otra solución es realizar la conversión de XML a XHTML en el servidor.
Solución compatible con varios navegadores
En los capítulos anteriores, explicamos cómo usar XSLT en el navegador para convertir XML a XHTML. Creamos un JavaScript que utiliza un analizador XML para realizar la conversión. La solución JavaScript no funciona en navegadores que no tienen analizador XML.Para que los datos XML puedan ser utilizados en cualquier tipo de navegador, debemos convertir el documento XML en el servidor y luego enviarlo de vuelta al navegador como XHTML.
Esta es otra ventaja de XSLT. Uno de los objetivos de diseño de XSLT es hacer posible la conversión de datos de un formato a otro en el servidor y devolver datos legibles a todos los tipos de navegadores.
Archivos XML y archivos XSLT
Vea este documento XML que ya se mostró en un capítulo anterior:
<?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>
。
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>
。
Tenga en cuenta que este archivo XML no contiene ninguna referencia al archivo XSL.
Importante:Lo anterior significa que el archivo XML puede convertirse utilizando varias hojas de estilo XSL diferentes.
Convertir XML a XHTML en el servidor
Este es el código fuente para convertir un archivo XML a XHTML en el servidor:
Conversión usando código PHP:
<?php
// 载入 XML 文件
$xml = new DOMDocument;
$xml->load('cdcatalog.xml');
// 载入 XSL 文件
$xsl = new DOMDocument;
$xsl->load('cdcatalog.xsl');
// 设置转换
$proc = new XSLTProcessor;
// 添加 xsl 规则
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
?>
Consejo:Si usted no sabe cómo escribir PHP, puede estudiar nuestroTutorial de PHP。
Conversión usando código ASP:
<%
'载入 XML 文件
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
'载入 XSL 文件
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
'转换文件
Response.Write(xml.transformNode(xsl))
%>
Consejo:Si usted no sabe cómo escribir ASP, puede estudiar nuestroTutorial de ASP。
El primer bloque de código crea una instancia del analizador XML de Microsoft (XMLDOM) y carga el archivo XML en la memoria. El segundo bloque de código crea otra instancia del analizador y carga el archivo XSL en la memoria. La última línea de código convierte el documento XML usando el documento XSL y envía el resultado como XHTML a su navegador. ¡Excelente!
。
Otras extensiones