Analizando XML con XSLT en WordPress

2 minutos de lectura

Actualmente estoy tratando de cargar archivos XML externos y analizarlos en HTML usando un archivo de hoja de estilo XSL. Estoy usando el complemento XData Toolkit para lograr esto y funciona bien. Sin embargo, ese complemento requiere que cree una nueva consulta para cada archivo XML y use el código abreviado para cargar el contenido. Como tengo muchos archivos XML, este método puede no ser muy adecuado para mí.

¿Hay alguna manera de cargar el contenido XML y analizarlo dinámicamente con XSLT en una página pasando un parámetro (es decir, el nombre del archivo XML)?

¿Podría hacerlo con el script PHP XSLTProcessor? ¿Puedo llamar a un script PHP desde una página en WordPress? En caso afirmativo, ¿dónde guardo el script PHP? ¿Quizás algo como esto?

<?php

    // Load the XML source
    $xml = new DOMDocument;
    $xml->load('file.xml');

    $xsl = new DOMDocument;
    $xsl->load('stylesheet.xsl');

    // Configure the transformer
    $proc = new XSLTProcessor;
    $proc->importStyleSheet($xsl); // attach the xsl rules

    echo $proc->transformToXML($xml);

?>

No estoy muy familiarizado con WordPress y PHP, por lo que cualquier sugerencia es bienvenida. Información adicional: Uso de Pagelines Theme y WordPress 3.4.1

WordPress tiene un procesador XML incorporado eso puede ser más simple de usar si su objetivo final es mostrar el contenido.

Si es más fácil incluir un script PHP que escribió para convertir los feeds o importar una biblioteca, puede colocar el script en la carpeta del tema (es decir, /wp-content/themes/pagelines/) y llamarlo con incluir_una vez:

include_once(get_template_directory().'/FILENAME.php');

avatar de usuario
siebe jongebloed

Para usar un parámetro (obtener) en un script php, use esto:

$xmlArchivo = $_GET[‘xml-file’];

Y luego simplemente cambie su código a algo como esto:

<?php

$xmlFile = $_GET['xml-file'];
$xmlDir="dirWithXmlFiles/";
$xmlUri  = $xmlDir . $xmlFile;

if(! file_exists($xmlUri)){
   echo 'some error';
   return;
}

// Load the XML source
$xml = new DOMDocument;
$xml->load($xmlUri);

$xsl = new DOMDocument;
$xsl->load('stylesheet.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

echo $proc->transformToXML($xml);

Y si necesita agregar algún contenido dinámico, puede hacerlo pasando parámetros como este:

$proc->setParam('someNameOfParameter', $someValueOfParameter); 

y utilícelo en el xslt, o cree un archivo xml con contenido de $xmlUri y el contenido dinámico como xml.

¿Ha sido útil esta solución?