Foros del Web » Programación para mayores de 30 ;) » Programación General »

Crear varios html a partir de un XML + XSL

Estas en el tema de Crear varios html a partir de un XML + XSL en el foro de Programación General en Foros del Web. A ver si un alma caritativa me echa un poco de luz. Estoy montando un site con una base de datos de artículos en XML. ...
  #1 (permalink)  
Antiguo 07/11/2006, 03:57
Avatar de clonn  
Fecha de Ingreso: octubre-2006
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
Crear varios html a partir de un XML + XSL

A ver si un alma caritativa me echa un poco de luz.

Estoy montando un site con una base de datos de artículos en XML. Lo que quiero es crear varas páginas diferentes que tomen el contenido desde este único XML. Quiero conservar todo en un XML para poder repetir contenidos en algunas página, seleccionándolos por diferentes criterios.
El problema es que al XML le asigno una XSL y punto. He intentado con xpath, xlink, xinclude y varias cosas más, pero no logro que funcione.
Una opción que he probado es crear un XML para cada página y después en la XSL tomar los contenidos del XML grande mediante:
Código:
<xsl:value-of select="document('midocumento.xml')" />
Funciona bien, excepto en Safari.

Alguna idea? Milgracias!
  #2 (permalink)  
Antiguo 14/11/2006, 13:51
Avatar de Mikmoro
Colaborador
 
Fecha de Ingreso: octubre-2006
Ubicación: K-pax
Mensajes: 7.228
Antigüedad: 17 años, 7 meses
Puntos: 280
Puede ser

Si usas la especificaciópn xslt 1.1, podría ser con la etiqueta <xsl:document>
No estoy del todo seguro de que sea lo que buscas, pero puedes mirar el tutorial del w3c sobre xslt 1.1. Hay un apartado (16.5) que se denomina "Multiple Output Documents". Creo que con esta instrucción en la xslt principal puedes crear un índice como una tabla de contenidos, que enlaza al resto de documentos que puedes crear en la misma xslt. Creo también que es posible dar a cada xsl:document distintos contenidos, parámetros, transformaciones, etc., pero no lo he podido probar.

Si lo lees ya me dirás a ver si te sirve, si hace exactamente eso y si era lo que necesitabas.
Mikel.
  #3 (permalink)  
Antiguo 02/02/2007, 04:22
Avatar de clonn  
Fecha de Ingreso: octubre-2006
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Ayuda: Crear varios html a partir de un XML + XSL

Me auto-respondo. Lo he solucionado con un parser de PHP, sobre PHP5, en Safari no rula la transformación en cliente.

enlace que no me deja meter > www .forosdelweb. com/showthread.php?t=441092

(quitar espacios)
  #4 (permalink)  
Antiguo 16/02/2007, 09:08
Ro!
 
Fecha de Ingreso: febrero-2007
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Crear varios html a partir de un XML + XSL

Hola Cloon...
disculpa, podrías explicar cómo lo solucionaste? creo que podría ayudarme con mi problema
  #5 (permalink)  
Antiguo 02/04/2007, 07:41
Avatar de clonn  
Fecha de Ingreso: octubre-2006
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Crear varios html a partir de un XML + XSL

Hola, perdona por la tardanza.
El script es este:

Código PHP:
<?php
$xml 
= new DOMDocument;
$p $_GET['p'];
$s $_GET['s'];
$xml->load("../xml/".($p).".xml");
$xsl = new DOMDocument;
$xsl->load("../xsl/".($s).".xsl");
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
echo 
$proc->transformToXML($xml);
?>
En las URLs pongo dos variables, $p que es la página de XML y $s que es la de XSL. El bichito este hace la transformación en servidor. Ojo, ten en cuenta que tu servidor tiene que soportar XSLT, lo puedes ver con un phpinfo.

También puede serte útil este otro parser que es básicamente lo mismo, pero guarda un archivo .html del resultado:


Código PHP:
<?php
$xml 
= new DOMDocument;
$p $_GET['p'];
$s $_GET['s'];
$xml->load("../xml/".($p).".xml");
$xsl = new DOMDocument;
$xsl->load("../xsl/".($s).".xsl");
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
$proc->transformToURI($xml"../".($p).".html");
?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:27.