Foros del Web » Programando para Internet » PHP »

Validar XML como

Estas en el tema de Validar XML como en el foro de PHP en Foros del Web. Hola: Estoy creando este código XML a partir de PHP. El código que me genera es este: Código HTML: <?xml version= "1.0" encoding= "iso-8859-1" ?> ...
  #1 (permalink)  
Antiguo 12/09/2004, 09:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Validar XML como

Hola:
Estoy creando este código XML a partir de PHP. El código que me genera es este:
Código HTML:
<?xml version="1.0" encoding="iso-8859-1"?>
<categoria>BlackHats <noticia>
		<titulo>asdsdf</titulo>
		<resumen>sdfsdf</resumen>
		<publicado>Sábado30, Diciembre de 1899 | 12:00 AM Por: sdfsdfsd</publicado>
		<url>noticias.php%3Faccion%3Dmostrar%26categoria%3D1%26noticia%3D2%26jcgrmsid%3D93019492e5955cba512dc8dee6354a92</url>
	</noticia>
</categoria> 
pero cuando trato de leerlo con algun lector de RSS o XML me da error. Lo he validado con el XML Spy de Altova y me pone esto:
Cita:
Unable to locate a reference to a supported schema kind (DTD,DCD,W3C Schema,XML-Data,Biz Talk) within this ... // aquie se me trunca el mensaje
me ayudan a resolver este error. El código lo genero de esta forma:
Código PHP:
function PHPToRSS($filename,$tituloweb){
  $filename = strtolower(str_replace(' ', '', index)) . '.xml';
  if (file_exists($filename)) {
   @unlink($filename);
  }
  session_start();
  $sid = "&jcgrmsid=".session_id();
  $handler      = fopen($filename,'w+');
  $query        = "SELECT *,DAYOFMONTH(fecha_publicacion) as dia, DAYOFWEEK(fecha_publicacion) as semana, MONTH(fecha_publicacion) as mes, YEAR(fecha_publicacion) as year, DATE_FORMAT(fecha_publicacion,'%h:%i %p') as hora FROM jcgrm_noticias WHERE activa<>0 GROUP BY idcat";
  $result       = mysql_query($query) or die(mysql_error());
  $rssfile      = "<?xml version="1.0\" encoding=\"iso-8859-1\"?>";
    while(
$row mysql_fetch_assoc($result)){
     
$idnoticia $row['idnoticia'];
     
$titulo    $row['titulo'];
     
$resumen   nl2br($row['resumen']);
     
$fecha     UltimoMensaje($row['dia'],$row['semana'],$row['mes'],$row['year'],$row['hora'],$row['autor'],1);
     
// Sacamos el titulo de la categoria correspondiente
     
$querycat  "SELECT * FROM jcgrm_categorias_noticias WHERE idcat=".$row['idcat']."";
     
$resultcat mysql_query($querycat) or die(mysql_error());
     
$rowcat    mysql_fetch_assoc($resultcat);

     
$url urlencode("noticias.php?accion=mostrar&categoria=".$row['idcat']."&noticia=".$row['idnoticia']."".$sid."");

     
$rssfile.= "<categoria>".$rowcat['titulo']."";
     
$rssfile.= " <noticia>";
     
$rssfile.= "  <titulo>".$titulo."</titulo>";
     
$rssfile.= "  <resumen>".$resumen."</resumen>";
     
$rssfile.= "  <publicado>".$fecha."</publicado>";
     
$rssfile.= "  <url>".$url."</url>";
     
$rssfile.= " </noticia>";
     
$rssfile.= "</categoria>";
  }
  if(!
fputs($handler$rssfile))
  {
    echo 
"no se pudo crear el Rss";
  }
  
fclose($handler);
}
A una cosa como puedo poner la direccion de esta forma http://index.php?accion=mostrar&cat=1
ese "&" el XML no lo reconoce y me da error.
Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 12/09/2004, 12:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El formato RSS es bien específico .. Si, es XML en su base .. pero tiene su definición própia, no puedes usar tus nombres de objetos tipo "noticia" y demás propiedades, el RSS tiene los nombres de los objetos y propiedades bien definidos y que no puedes cambiar para cumplir ese standard concreto ..

Por lo demás (no es mi fuerte XML) pero falta más definición de los DTD .. (eso del "DOCTIPE" o algo así ..)

Aquí tienes un ejemplo completo ...
http://lowendmac.com/tech/php16.html

Y OJO por qué el formato RSS tiene sus versiones .. así que debes saber que versión quieres generar y adaptarse al standard que corresponda. Puedes leer:

http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html

En general . .usa GOOGLE! hay mucha información al respecto y todo lo tienes ya más que inventado: Entiende que es el formato RSS (como cultura general) y usa algún script ya hecho. Si quieres reinventar la rueda por satisfacción personal .. OK, pero antes tendrás que leer teoría sobre el formato que quieres "escribir" antes de hacer nada en "PHP".

Un saludo,
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 07:43.