Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/01/2009, 05:08
draude
 
Fecha de Ingreso: enero-2009
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Respuesta: Por favor, ayuda con XML,XSLT,XHTML y Schemas :S

Hola ercea, yo estoy más o menos como tú, tengo que hacer un trabajo y tengo bastantes problemas xD, pero creo que tengo una solución para el tuyo:

no sé cómo es exactamente tu archivo xml pero supongo que tendrá etiquetas <artista> <obra> <exposición>... si tú sólo quieres ver los artistas puedes hacer una página artistas.php con el siguiente contenido

Código PHP:
<HTML><HEAD><TITLE>ARTISTAS</TITLE></HEAD>

<BODY>

<?php

$filename 
"loquesea.xml";

// Definición del contenido del fichero xml.
// Es importante escribir los elementos en mayúsculas.

$begin_array = array(

 
"ARTISTA"         => "<B>",
 
"OBRA"             => "<!--",
 
"EXPOSICION"  => "<!--"

);

$end_array = array(

 
"ARTISTA"         => "</B><BR>",
 
"OBRA"             => "-->",
 
"EXPOSICION"  => "-->"

);


function 
startElement($parser$name$attrs) {
    global 
$begin_array;
    
// ¡ Cuidado ! Aquí no se escribe == en el if porque es una funcion 
    // que va a utilizar el objeto xml.
    
if ($htmlexpr $begin_array[$name]) {print "$htmlexpr";}
}

function 
endElement($parser$name) {
    global 
$end_array;
    if (
$htmlexpr $end_array[$name]) {print "$htmlexpr";}
}

function 
characterData($parser$data) {
    print 
$data;
}

//Aquí empieza la lectura del fichero XML.
$xml_parser xml_parser_create();

// Opciones del objeto xml: no tener en cuenta las minúsculas.
xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDINGtrue);

// Manejadores de elemento inicial y final: qué es lo que tiene que hacer.
xml_set_element_handler($xml_parser"startElement""endElement");

// Manejador para los datos leídos.
xml_set_character_data_handler($xml_parser"characterData");

if (!(
$fp fopen($filename"r"))) {die("&iexcl;Error! no se puede abrir el fichero: ".$filename);}

// Leemos el fichero en bloques de 4KB.
while ($data fread($fp4096)) {
    if (!
xml_parse($xml_parser$datafeof($fp))) {
            die(
sprintf("Error XML : %s en la l&iacute;nea %d",
        
xml_error_string(xml_get_error_code($xml_parser)),
            
xml_get_current_line_number($xml_parser)));
    }
// end del while

// Liberamos la memoria.
xml_parser_free($xml_parser);

?>

</BODY>

</HTML>
de este modo, se coge el documento "loquesea.xml" y según los vectores de inicio i fin lo que se harà es: el contenido de las etiquetas <artista> se escribirá en negrita, mientras que las etiquetas <obra> y <exposicion> estarán comentadas (<!-- texto -->) por lo que sólo serán visibles los autores.
De forma análoga se puede hacer obras.php y exposición .php, jugando con los vectores de inicio y fin y las correspondientes etiquetas del archivo .xml