Foros del Web » Programando para Internet » PHP »

Validar objeto DOM

Estas en el tema de Validar objeto DOM en el foro de PHP en Foros del Web. Hola. Tengo un objeto DOM con un XHTML cargado que necesitaria validar para posteriormente poder hacer uso de "getElementById". El problema es que si utilizo ...
  #1 (permalink)  
Antiguo 15/08/2008, 04:06
 
Fecha de Ingreso: julio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 2
Validar objeto DOM

Hola.

Tengo un objeto DOM con un XHTML cargado que necesitaria validar para posteriormente poder hacer uso de "getElementById".

El problema es que si utilizo "DOMDocument::validate" aumentan mucho los tiempos de carga, imagino que por la peticion del DTD a la w3c (no se si se podria crear una especie de cache).

Por otro lado si uso "DOMDocument::schemaValidate" con el XSD de la w3c (http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd) siempre obtengo errores, no se si sera un bug de PHP o del XSD ya he revisado el XHTML varias veces y esta bien, cosa que confirma el validador online de la w3c.

¿alguna idea?

Muchas gracias y salu2.
  #2 (permalink)  
Antiguo 15/08/2008, 08:16
Avatar de julianmejio  
Fecha de Ingreso: agosto-2005
Ubicación: Medellín, Antioquia
Mensajes: 88
Antigüedad: 18 años, 8 meses
Puntos: 3
Respuesta: Validar objeto DOM

¿Qué errores te aparecen cuando validas el DOM con el XSD?
  #3 (permalink)  
Antiguo 15/08/2008, 09:50
 
Fecha de Ingreso: julio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Validar objeto DOM

El error es:
Cita:
Warning: DOMDocument::schemaValidate() [domdocument.schemavalidate]: Element 'html': No matching global declaration available for the validation root.
Ahora mismo, para sacar el error, lo estoy validando contra la url (si funcionara guardaria el archivo en local):
Código PHP:
$this->xhtml->schemaValidate("http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"); 
Y el codigo de la pagina:
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<meta http-equiv="Content-Style-Type" content="text/css; charset=UTF-8" />
		<meta name="keywords" content="XML-RPC,JavaScript,PHP" />
		<meta name="descripción" content="Libreria AOG XML-RPC (AXR)" />
		<title>AOGlaboratory</title>
		<link rel="stylesheet" type="text/css" href="css/header_screen.css" charset="UTF-8" />
		<link rel="stylesheet" type="text/css" href="css/content_screen.css" charset="UTF-8" />
		<link rel="stylesheet" type="text/css" href="css/main_screen.css" charset="UTF-8" />
		<style type="text/css">
			body { margin: 0px; }
		</style>
		<script type="text/javascript" src="js/xmlrpc_util.js" charset="UTF-8"></script>
		<script type="text/javascript" src="js/xmlrpc_dom.js" charset="UTF-8"></script>
		<script type="text/javascript" src="js/xmlrpc.js" charset="UTF-8"></script>
		<script type="text/javascript" src="js/aoglab.js" charset="UTF-8"></script>
		<script type="text/javascript" charset="UTF-8">
			var aoglab = new Aoglab();
		</script>
	</head>
	<body>
		<div class="header">
			<div class="logo">
				<h1>AOG<span>laboratory</span></h1>
				<h3>[ www.aoglab.net ]</h3>
			</div>
			<div class="menu">
				<ul>
					<li><a href="?content=xmlrpc_start">xml-rpc</a></li>
					<li><a href="?content=contact">contacto</a></li>
				</ul>
			</div>
		</div>
		<div class="content">
			<div class="main">
				<h2>Contacto</h2>
				<fieldset>
					<form id="send_mail" action="index.php?content=contact" method="post">
						<table>
							<tr>
								<td><label for="captcha">Captcha: </label></td>
								<td><img id="captcha_image" src="" alt="Captcha" /></td>
								<td><input id="captcha" name="captcha" type="text" /></td>
							</tr>
							<tr>
								<td><label for="nickname">Nombre:</label></td>
								<td colspan="2"><input id="nickname" name="nickname" type="text" /></td>
							</tr>
							<tr>
								<td><label for="mail">E-mail:</label></td>
								<td colspan="2"><input id="mail" name="mail" type="text" /></td>
							</tr>
							<tr>
								<td><label for="subject">Asunto:</label></td>
								<td colspan="2"><input id="subject" name="subject" type="text" /></td>
							</tr>
							<tr>
								<td><label for="message">Mensaje: </label></td>
								<td colspan="2"><textarea id="message" name="message" rows="5" cols="20"></textarea></td>
							</tr>
							<tr>
								<td colspan="3"><input type="submit" value="enviar" /></td>
							</tr>
						</table>
					</form>
				</fieldset>
			</div>
		</div>
	</body>
</html> 
Muchas gracias y salu2.

Última edición por aoglab; 15/08/2008 a las 09:55
  #4 (permalink)  
Antiguo 17/08/2008, 03:24
 
Fecha de Ingreso: julio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Validar objeto DOM

Bueno, pues la final me las he apañado con "Xpath":
Código PHP:
$xpath = new DOMXPath($this->xhtml);
$element $xpath->query("//*[@id = 'captcha_image']")->item(0); 
Se supone que "Xpath" es bastante mas lento que "getElementById" pero no se si tambien sera mas lento que validar y usar posteriormente "getElementById".

Salu2.
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:10.