Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > HTML, Javascript y otros
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
URL con ampersand en XHTML

Pues verán: estoy traduciendo, poco a poco, mis páginas para que utilicen XHML. He terminado una de las páginas pero el validador del 3WC me dice que hay un error en la siguiente línea:
Código PHP:
   <a href="http://burdjia.com/foros/profile.php?mode=viewprofile&u=4">Ñuño Martínez</a><br /> 
En concreto hay un problema con el último parámetro de la URL por el uso del ampersand. ¿Cómo debería escribir esa dirección? Es el único error que detecta en la página y sería una pena que por esa tontería no pueda meter el botón de validación.
Responder Con Cita
  #2  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Yo tengo ese problema ahora mismo en Loturak. Sería interesante que alguien pudiera arrojar algo de luz sobre este tema, puesto que lo tengo, ciertamente, un poco abandonado, sin duda, porque mientras se está en una cosa no puede estarse en la otra.

Empero, no creas que no me preocupé de buscar alguna solución. Y, de hecho, si lo dejé un poco de lado es porque llegué a algo un tanto extraño... me explico. Las páginas de Loturak suelen validar (nos preocupamos de ello y revisamos que esto es así regularmente) y no lo hacen, por el problema que dices, únicamente algunas páginas.

Verás. En algunas páginas en donde se "imprimen" URLs como la que mencionas utlizamos algo así previamente:

Código PHP:
$urlEnlace str_replace('&',  ' & # 3 8 ;'$datosEnlace->enlace_url); 
Y... funciona. ¿Cómo? ¿No he dicho arriba que no funciona? He dicho que ocurre algo que yo no he conseguido aún sino catalogar de "raro" (por desconocimiento, como suele pasar), y es que funciona en algunos sitios, pero, no en otros... funciona o, por mejor decir, funciona en todos los sitios, excepto en las páginas de Loturak que "listan" enlaces.

Son las URLs de algunos enlaces los que "rompen" la validación del código, no es código de la propia Loturak, sino que son las URLs de los enlaces que se añaden a la aplicación por los usuarios de la aplicación. Pues bien, aunque se sigue el mismo proceso:

Código PHP:
$urlEnlace str_replace('&',  ' & # 3 8 ;'$datosEnlace->enlace_url); 
Lo cierto es que, como digo, en las páginas donde se "listan" los enlaces no parece surtir efecto. Hemos mirado, remirado, probado y comprobado, pero, aún no encontramos una solución apropiada. Tal vez ahora sea el tiempo.

PD. Ojo, he separado la entidad HTML con la que sustituimos el "ampersand" de la URL porque de lo contrario no saldría como queremos en el mensaje, o sea aquí, sino que saldría el propio "ampersand" que representa dicha entidad HTML. Si vas a probarlo quita los espacios a & # 3 8 ;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-10-2006 a las 16:28:24.
Responder Con Cita
  #3  
Antiguo 04-10-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Gracias Dec. Ya está arreglado poniendo el &#...;

Pero no acabo yo de pillar los problemas que tenéis en Loturak...
Responder Con Cita
  #4  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Pero no acabo yo de pillar los problemas que tenéis en Loturak...
Pues ya ves, es lo que he comentado: algo raro... por lo menos. Tú mismo acabas de comprobar que funciona la propuesta de solución y también funciona en Loturak... excepto donde no funciona.

Bueno. Tal vez estamos pasando algo de largo... o existe otra solución más apropiada... tenemos que mirarlo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 04-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hice una pequeña búsqueda en Google sobre el problema y encontré esto:

Cita:
Empezado por W3C Recommendation
C.12. Using Ampersands in Attribute Values (and Elsewhere)
In both SGML and XML, the ampersand character ("&") declares the beginning of an entity reference (e.g., &reg; for the registered trademark symbol "®"). Unfortunately, many HTML user agents have silently ignored incorrect usage of the ampersand character in HTML documents - treating ampersands that do not look like entity references as literal ampersands. XML-based user agents will not tolerate this incorrect usage, and any document that uses an ampersand incorrectly will not be "valid", and consequently will not conform to this specification. In order to ensure that documents are compatible with historical HTML user agents and XML-based user agents, ampersands used in a document that are to be treated as literal characters must be expressed themselves as an entity reference (e.g. "&amp;"). For example, when the href attribute of the a element refers to a CGI script that takes parameters, it must be expressed as http://my.site.dom/cgi-bin/myscript....&amp;name=user rather than as http://my.site.dom/cgi-bin/myscript....uest&name=user.
Esto es, la url debes escribirla de la siguiente forma:

Código PHP:
<a href="http://burdjia.com/foros/profile.php?mode=viewprofile&amp;u=4">Ñuño Martínez</a><br /> 
Y me imagino que sería el mismo caso de Dec
Responder Con Cita
  #6  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Excelente Maeyanes. Ya lo estoy probando.

PD. Y el caso es que me parece recordarlo...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Pues parece que va de perilla. Muchas gracias Maeyanes.

http://validator.w3.org/check?uri=http://www.loturak.es
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-10-2006 a las 17:39:37.
Responder Con Cita
  #8  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno... el agradecimiento sigue en pie, ¿eh? Que conste.

Sin embargo,... sigue dándose el mismo problema... sin duda algo se nos está escapando, puesto que el texto que has puesto antes Maeyanes parece claro. Habrá que mirarlo más detenidamente.

http://validator.w3.org/check?uri=ht.../compartir?p=2
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 04-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Bueno, acabo de validar a loturak, usando el enlace que pusiste y pasó...

Ahora, revisando el código XHTML de loturak, veo que tienes algo como esto:

Código PHP:
<span class="tituloenlace"><a href="visitar?enlace-id=3988" title="Abrir este enlace">... 
Si te fijas, el tag a contiene en la propiedad href un ampersand como tal, esto es, no se usa la entidad &amp;. La verdad no se si esto sea así por cuestiones del navegador (que sustituya el &amp; por & al mostrar el código fuente) o por que así lo envía el servidor. Pero hasta eso, el validador lo pasó como bueno...


Saludos...


Editando: Me acabo de dar cuenta que la regué feo... xDDD Por alguna razón confundí el ? del código con un &... :P Dado esto, todo lo anterior no tiene mucho caso...

Última edición por maeyanes fecha: 04-10-2006 a las 18:18:29.
Responder Con Cita
  #10  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No; el caracter que ves en el "href" es un signo de interrogación, no un "ampersand" (a mí también me ha parado eso, no creas). El caso es que no entiendo qué puede pasar por lo que he comentado: en unos sitios funciona y en otros no. Pero, he comprobado que lo que llega al "validador" son las entidades HTML de los "ampersand", o sea, que debería ir bien... o algo se está escapando por ahí, que es lo más seguro, claro.

Es curioso y no sé si estará feo decirlo, pero, el caso es que Loturak valida, esto es, hasta donde sabemos lo único que falla es este tema, y por eso, aparentemente, acaso debería ser más sencillo darse cuenta de dónde está el problema, pero, ya ves...

Gracias otra vez Mayenaes por el interés.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 04-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Si, me di cuenta después de publicado el mensaje... xDDD

Por eso la pequeña aclaración que puse... ahora... volviendo al tema que nos interesa:

Código PHP:
<a href="#" title="Vista previa del enlace" onclick="javascript:Interfaz.VistaPreviaEnlace('marcovistaprevia-3709', 'http://tech-hints.org/?q=node/3&page=0%2C0'); return false;"><img src="img/plugin_link.png" alt="vista previa" width="16" height="16" /></a
Si te fijas, la url que está en esta parte del código (http://tech-hints.org/?q=node/3&page=0%2C0), tiene el & como tal y no en forma de entidad HTML (&amp;) y es por eso que no pasa la validación...


Saludos...
Responder Con Cita
  #12  
Antiguo 04-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Lo que hay que hacer para satisfacer a los validadores. Pabernosmatao!
Responder Con Cita
  #13  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Efectivamente, has dado en el clavo de nuevo: esas URLs no estaban siendo "tratadas", empero, aún así, después de hacerlo, seguían produciéndose errores... pues bien, fijándome un poco más en el mensaje de error que proporcionaba en este caso el "validador", me encuentro con esto: Ampersands, PHP Sessions and Valid HTML... veremos a ver, porque el "validador" dice, literalmente, que es la solución al problema.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #14  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
Lo que hay que hacer para satisfacer a los validadores.
Bueno, tampoco es únicamente por eso Román.

No creas, ha estado interesante todo esto, o a mí me lo ha parecido.

Por otro lado, parece que el invento del artículo mencionado antes funciona: la siguiente página de Loturak contiene URLs que cuentan con los "ampersand" famosos y ya no da errores:

http://validator.w3.org/check?uri=ht.../compartir?p=3

He seguido la solución que dan en el artículo, creo, que, al pie de la letra. He añadido al ".htaccess" del directorio "raíz" de Loturak este par de líneas:

Código:
# http://www.w3.org/QA/2005/04/php-session
php_value session.use_trans_sid 0
php_value arg_separator.output &amp;
Je, je, je... Bueno. Pues muchas gracias por iniciar este Hilo, gracias a todos por el interés y especialmente a Maeyanes por el empujón, puesto que, como he venido diciendo, esta era una tarea "pendiente", tal vez desde hace ya demasiado tiempo.

PD. A ver si en verdad funciona... porque, ¡hay que ver la guerra que ha dado! Je, je, je.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #15  
Antiguo 04-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
Bueno, tampoco es únicamente por eso Román.
¿Y por qué otra razón entonces?

Pero en realidad, lo que me intriga es por qué, siendo el uso del & tan viejo como Matusalén, cuando se diseñó el estandar del xhtml, no se tomó en cuenta eso. Obligar a escribir & amp ; en cada enlace, en lugar de simplemente & me parece por demás ocioso. (no ustedes, los que hacen estos estándares)

// Saludos
Responder Con Cita
  #16  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
¿Y por qué otra razón entonces?
Me temía esa pregunta. Y es que yo no soy el más adecuado para responderte, me temo. No sé. Desde que he podido hacerlo me ha gustado que las páginas Web que he hecho tuvieran código válido para el W3C. No se me escapa que no aplico como debo algunos temas de accesibilidad, otros relativos a la semántica, y es que reconozco que de esto no sé lo suficiente. No sé Román, gusta que te digan que haces "bien" las cosas. Y entrecomillo el bien para que no me respondas, ¿es que si no validas significa que no haces bien las cosas? Es una forma de hablar. ¿Vale?

Cita:
Empezado por Román
Pero en realidad, lo que me intriga es por qué, siendo el uso del & tan viejo como Matusalén, cuando se diseñó el estandar del xhtml, no se tomó en cuenta eso. Obligar a escribir & amp ; en cada enlace, en lugar de simplemente & me parece por demás ocioso. (no ustedes, los que hacen estos estándares)
En eso, y, a falta de argumentos que pudieran dar peso a la decisión de los desarrolladores "culpables", estoy contigo al cien por cien. En este caso ha sido algo que, si bien a resultado al cabo hasta divertido y ameno, lo cierto es que es demasiado tener que añadir a CADA ENLACE el "ampersand codificado". Es posible que exista alguna razón y se nos escape... ¿quién sabe?

PD. Y esto sin contar el tema del "hack" en PHP... las líneas en el ".htaccess", etc. Uno piensa que acaso otros lenguajes similares a PHP tengan el mismo problema... y acaso su propia forma de solucionarlo...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-10-2006 a las 19:18:20.
Responder Con Cita
  #17  
Antiguo 04-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Bueno, según el W3C: XML-based user agents will not tolerate this incorrect usage, and any document that uses an ampersand incorrectly will not be "valid", and consequently will not conform to this specification..

Tal vez el problema sean los navegadores que no siguen al 100% el estándar...



Saludos...
Responder Con Cita
  #18  
Antiguo 04-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Maeyanes
Tal vez el problema sean los navegadores que no siguen al 100% el estándar...
Voy a decir a eso por Román: "¡Pues vaya un estándar!"...

PD. Véase el artículo de Pedro Palazón: Técnicamente inmoral

Quiero resaltar lo que dice de que cuesta lo mismo hacer una página que "valide" que una que no valide. Yo me atrevería a decir que cuesta menos hacer una página que "valide" que una que no valide. Y lo digo por experiencia, vamos. Y no me las quiero yo dar aquí de super nada... es simplemente lo que creo que ocurre.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-10-2006 a las 19:24:52.
Responder Con Cita
  #19  
Antiguo 04-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por maeyanes
Tal vez el problema sean los navegadores que no siguen al 100% el estándar...
Ja, ja, claro, ya he visto eso. Pero el problema es desde el momento en que se establecen esos estándares. Vamos, yo entiendo que haya estándares, su necesidad y todo eso, pero haber "invalidado" el uso sencillo de un símbolo es lo que me parece erróneo.

Y, en muchos casos puedo ser como dec, es "bonito" que algo te diga que tu código es válido, pero a veces me prgunto si no nos entretenemos demasiado con eso, siendo que esos organismos que establecen los estándares no son siempre muy atinados. Baste ver que media humanidad ya usa Ajax, y aún no pueden establecer un mísero estándar.

// Saudos
Responder Con Cita
  #20  
Antiguo 04-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
Véase el artículo de Pedro Palazón: Técnicamente inmoral
No, no, si nadie niega los beneficios de contruir tu casa con ladrillos de calidad. Pero si la normatividad me dice que no puedo pintarla de verde porque se confunde con los arbolitos del vecindario, pues me carcajeo de los leguleyos y si no hay multa me paso muy por alto su normatividad. Claro que aquí si hay multa, la que menciona maeyanes, pero no deja de ser ridículo.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ventana MDI, "Siempre visible" y "Pantalla completa" ixMike API de Windows 7 11-04-2007 18:36:55
¿cuál es mejor: "close" o "application.terminate"? unreal4u Varios 5 05-03-2007 11:01:19
"ChequeaEsto" elegido el futuro "Killer CLubDelphi" mamcx Noticias 51 31-10-2006 20:56:32
porque no me reconoce los caracteres "*" ni "%" cuando filtro mrmago Conexión con bases de datos 10 27-01-2006 04:21:16


La franja horaria es GMT +2. Ahora son las 10:56:51.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi