Contenido

¿Como enlazar código de la forma más semántica posible?

10 sep

+ 14

Escribiendo artículo anterior me ha asaltado una duda. ¿Como enlazar código de la forma más semántica posible? 

Opción 1)

<a href="http://es2.php.net/sprintf"><code>sprintf()</code></a>

¿Indicando que el término del enlace es código?.

Opción 2) 

<code><a href="http://es2.php.net/sprintf">sprintf() </a></code>

¿Indicando que el enlace nos lleva a código? 

Seguro que es una chorrada, pero leyendo el código no velo mismo en el caso 1 que en el caso 2. ¿Alguna idea? 

  • Yo creo, como infeliz insensato, que la mejor forma es la primera. Diciendo que es un “enlace” y después que dentro de ese enlace es lo que se muestra, es decir, código.
    La segunda opción puede confundir… en la lectura.

  • El primer ejemplo me parece semanticamente más apropiado, ya que todo lo que esté dentro de <a> es un enlace, y todo lo que esté dentro de <code> es un código. Como lo que queremos poner es un hipervínculo a algún lado y cuyo texto resulta ser un pedazo de código, el primer ejemplo me parece más adecuado. El segundo sería una forma de mostrar el codigo usado para crear un hipervínculo.

  • Pues yo soy más partidario de la segunda opción

    Pero claro por comodidad, puedes acabar usando una u otra (Si tienes que poner más cosas en el <a> ya sea un o alguna otra cosa.

    Aunque también, si pusieras otra cosa, sería más correcto a nivel semántico repetir el </a><a>.

    ¿NO?</a>

  • Solo hay un ejemplo correcto y es el segundo, al cual por cierto le sobra un espacio en el anchor.

    El texto se cataloga como código. El que haya un enlace en el texto o no es irrelevante. El que haya un enlace que cubra todo el contenido es tan irrelevante como si el anchor es una palabra de doscientas.

    De hecho esa es una buena forma de ver cual es la forma correcta. Imagina que no enlazas todo lo que hay entre ‘code’ sino que es todo un bloque de codigo y quieres enlazar sólo sprintf. Ahí queda más claro.

    Esta ha sido la forma correcta desde que usabamos tags de ‘i’ y ‘b’ en enlaces. Primero el estilo, luego el enlace. El enlace tiene un dominio inferior que el estilo.

  • Hola Andres,

    Desde mi punto de vista las dos son incorrectas, me explico

    Estas usando el elemento code, que si es cieto es para delimitar texto de codigo, pero lo que haces es ponerlo dentro del elemento A, que sirve para enlazar con otro contenido.

    Para esto lo mejor seria usar el atributo type , en la especificacion de la w3c,lo explica [1]

    type %ContentType; #IMPLIED — tipo de contenido consultivo —

    Lo que ahora me surje una duda y seria qeu tipo de content type poner, lo podemos ver en la web de iana [2], pero no existe o no veo un tipo de contenido, para un codigo, salvo indicanco que va a ser texto plano

    Así que yo lo dejaría así

    Un saludo, y sigue con tu blog, te leo todos los días aunque me tienes que perdonar ya que no suelo dejar comentarios

    [1]
    http://html.conclase.net/w3c/html401-es/struct/links.html#edef-A
    [2] http://www.iana.org/assignments/media-types/

  • Va a haber tantas respuestas como queramos, pero esto es lo que yo creo:

    La respuesta depende al contexto, en el caso que planteas, donde enlazas una y solo una función, da exactamente igual, no hay diferencia en lo que ve un usuario (un pedazo de código enlazado a la que seguramente es su definición).

    Ahora que si querés enlazar una porción del código, ahi está claro que será code>a.

  • Estoy de acuerdo con noth. Las opciones que das, no son semánticamente correctas para lo que quieres. Lo mejor sería usar el atributo type dentro del ancla: <a href=”http://es2.php.net/sprintf” type=”text/php”>sprintf()</a> (aunque este MIME type no existe todavía, así que tendrías que poner alguno más genérico, como text/plain.

  • El atríbuto type no tiene nada que ver con el tema del se habla en el documento referenciado sino con el tipo MIME de (seguramente) devolverá el documento. Las páginas de referencias de php.net son documentos HTML, entonces el atributo type debería ser text/html.
    Remitiendo a tu pregunta: con la segunda opción tenés las ventaja que los estilos que apliques en los enlaces tiene mayor importancia (por especificidad) que los que aplicas en el código; de esta forma podés diferenciar todos los enlaces.

  • Nos estamos desviando.

    Eso del text/php es una terrible interpretación de la especificación. El contenido que se especifica es el del DESTINO (esto es, el resultado del anchor), no el del texto entre las etiquetas de anchor (como bien dice Federico).

    No hay muchas respuestas. Solo hay dos respuestas porque la pregunta es “cuál es mejor?” y sólo hay dos opciones de dónde elegir.

    Me da mucho miedo cuando la gente se inventa interpretaciones del estándar (como la de Noth o TempWin) porque ese es el tipo de problemas que luego provocan desviaciones en el futuro. Que algo “valide” pero aún así esté mal hecho.

    Como ya comenté hay una sola alternativa semántica. Lo que calificas de anchor no es el codigo, sino la palabra. Esa palabra con enlace la catalogas de codigo pero no es importante si son diez paginas o una sola palabra. Es una cuestion de dominios y herencias. El dominio del anchor es inferior al dominio del codigo.

    Estrictamente hablando de lo que hoy en día se denomina “semántica” es exactamente igual. El texto es “code” sea o no sea enlace. El contexto del enlace es que es parte de un bloque de codigo (el que sea una palabra o diez mil no importa, no cambian las reglas).

  • Yo veo más lógica la primera opción.
    ¿Por qué? Pues porque indicas que es un código y luego estarías dando una información adicional del código… ¿No?

    Saludos!

  • Zydrick: Estas describiendo la segunda, de hecho. No la primera.

    Una buena forma para ver cual es más correcta es cambiar alguna de las etiquetas por una equivalente.

    Imáginemos que no es un enlace lo que queremos poner, sino una abreviatura. Ahi sabríamos instintivamente que el ABBR debería estar dentro de las etiquetas de CODE y no al revés, porque las etiquetas no son parte de la abreviatura. En este caso es lo mismo, en la primera opción estamos diciendo que el estilo es parte del enlace (cuando es al revés, el texto que es parte del código tiene un enlace)

  • Sólo una corrección a mi comentario. Pensé que en el ejemplo del enlace, se enlazaba a un código en PHP, no me di cuenta que era un documento HTML que muestra código PHP (como apunta Federico). Con lo cual, el type tendría que ser text/html). Sigo pensando que es la opción más correcta ;-)

  • Me parece interesante este debate.

    Pido disculpas por mi parte, porque aun leyendo el titulo del post y los ejemplos, en mi cabeza se penso como enlazar a un codigo fuente por ejemplo php

    normalmente eso se hace con una extension .phps
    y de ahí que propusiera el atributo type.

    quiero decir si tenemos el atributo hreflang para especificar el idioma de la página a enlazar, tendríamos que tener o bien un nuevo mime , o otro atributo para indicar que será código fuente de un lenguaje de programación

    y después leyendo con más detalle el post y viendo que es lo que necesitamos en este caso.

    yo creo que la opción más adecuada sería la segunda. metemos un trozo de código y enlazamos alguna parte a otra página web.

    y en el caso de que sea solo una función lo haría de la misma manera, para no hacer una cosa distinta cada vez, pero las dos formas estaría bien.

    Un saludo y perdonar la confusión

    P.D Eduo no creo que haga falta menospreciar a nadie que se haya equivocado, y más sin saber el porque de una respuesta

  • Noth: Tienes razón. No se debe menospreciar a alguien que se haya equivocado y no pensaba que lo estuviera haciendo pero si que es importante decirle a alguien cuando se equivoca.

    Si nadie hubiera mencionado el error entonces eso se queda escrito aqui (fíjate como hay gente de acuerdo con lo que has puesto, y es un error) y en seis meses alguien buscando en internet ve una respuesta que es errónea.

    Lo siento si se tomó peor de lo que era mi intención pero en Internet no es fácil adivinar cuando un error viene de un malentendido o viene de realmente estar equivocado y si te fijas al ver tu comentario da la impresión de ser el más informado por las referencias y demás.

    Aún así, y en ánimo de terminar de aclararlo todo, incluso cuando enlaces un .phps no debes usar un content type text/php porque un .phps es, específicamente, un HTML hecho y derecho.

    El atributo de type en un anchor existe para aclarar el tipo de fichero al que te vas a encontrar después del enlace pero la razón que tiene de existir es que ese tipo puede estar mal reportado. Por ejemplo es común que un .RAR o un .TAR o un .DMG aparezca como texto en el navegador porque ni el servidor ni el navegador saben interpretar de qué tipo es (y texto es el valor por defecto). También sucede cuando enlazas a una URL dinámica cuyo resultado, aunque diga en la URL “pelos.php?width=345&height=432&image=pelos” realmente es una imagen, pues en el anchor “A” especificas el type correcto y así el navegador sabe qué hacer.

    Ahora bien, type no sólo no es obligatoria sino que no es recomendada. Sólo debe usarse cuándo realmente sea necesario, lo cual suele ser para comepnsar configuraciones erróneas de servidores, tipos difícilmente deducibles o extensiones poco estándar.

    Sobre el ejemplo específico: Un fichero .php es texto, pero se interpreta en el server. Hacer una copia .phps se interpreta en el servidor creando una versión HTML (no text/php) del fuente original para su fácil lectura. Sin embargo si quisieras presentar el .php como texto podrías hacer una copia con extension .phpt (por ejemplo) y entonces podrías servirlo como text/php. Esto no es necesario porque el valor por defecto siempre es texto pero por lo menos ya sería correcto.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.