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_parser, XML_OPTION_CASE_FOLDING, true);
// 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("¡Error! no se puede abrir el fichero: ".$filename);}
// Leemos el fichero en bloques de 4KB.
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("Error XML : %s en la lí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