5.1.1.

18 abril 2005

Representando mi vida vacía (solución)

Categoría

Seguramente no aparecerán más propuestas para representar mi vida vacía por lo que pasaré a la explicación. Por cierto, es conveniente aclarar que jamás he trabajado con XML por lo que mi documento puede no ser perfecto (de hecho, voy a obviar gran parte de su estructura).

Empezaré justificando mi elección, que quizás es mucho más fácil de hacer. Primero, olvídense de todas las soluciones propuestas. Segundo, concéntrense en la estructura del documento sobre los autores en Linklog. Eviten pensar en sus nombres o en su presentación; noten que simplemente se trata de una lista: una lista de autores. Como se repiten, es válido considerar que puede existir un elemento AUTOR que los enumeré aunque sin distinguirlos. O sea que hasta el momento tenemos siete elementos AUTOR.

Momento de distinguirlos. Todos serían autores, pero como personas son únicos e irrepetibles. Quienes estén acostumbrados a las bases de datos, sabrán que cada registro tiene una identificación única. Si un valor no puede repetirse, ¿qué mejor que usar el atributo id que prohíbe que su valor se repita en otro elemento? Justamente esa es la razón por la que rechace la opción de Diego de usar class. Como el documento que estamos armando es muy sencillo y de uso privado, podemos recurrir a valores más amigables para id. Por tanto, de momento, parte del código se vería así.

<autor id="francog">
</autor>

<autor id="lucas">
</autor>

<autor id="mariano">
</autor>

<autor id="federico">
</autor>

Tengan en cuenta una cosa: un navegador o un parser normalmente mantienen oculto el valor de un atributo, por lo que no se puede depender del valor de id para obtener los nombres. Como se imaginarán, luego agregaré un elemento NOMBRE para contener los nombres. Si alguno se está preguntando si no sería redundante tener el nombre tanto en un atributo como en un elemento, les comento que no. Mientras que puede aparecer otro autor con el mismo nombre (por lo que el contenido de NOMBRE sería igual), el valor para su id tendría que ser distinta.

Volviendo a la página de autores, se ve que cada autor tiene ciertos datos asociados:

  • Nombre
  • Cantidad de posts
  • Localidad
  • Perfil (acerca de)

En mi código original, yo asocie el punto de perfil con un elemento LIFE, por lo que de momento el elemento AUTOR con mis datos dice algo como ésto.

<autor id="federico">
 <nombre>Federico</nombre>
 <posts>8</posts>
 <localidad>Buenos Aires</localidad>

 <life>Texto sin sentido</life>
</autor>

Como en el perfil digo el resto de mi vida, es valido ignorar todo el texto anterior de introducción. Si lo borraran, el elemento LIFE quedaría:

<life></life>

Como LIFE ahora no contiene ni siquiera espacios en blanco, es posible seleccionarlo con el selector :empty.

Después de mostrar como llegue a mi versión, creo que es bastante simple por qué ninguna de las soluciones propuestas me convenció. Más allá de la mala manía de inventar propiedades para CSS, que ya hemos visto que es innecesario, están olvidando un punto muy importante: ¿qué pasa si CSS está desactivado? Como la mayoría de los ejemplos tratan de establecer el hecho de que mi vida está vacía desde CSS, ¿si esta función estuviera desactivada, mi vida se llenaría de cosas?

Sobre el ejemplo que propuso Diego:

life#federico

LIFE no me parece el mejor nombre para un elemento que tiene que contener datos tan variados como el número de posts.

En el siguiente ejemplo, él propone:

profile#federico { life:empty }

Pero nuevamente caemos en que pasaría con mi vida (o LIFE) si se desactiva CSS.

La propuesta de JEL fue:

#federico-life {status: empty;}

En primero, con esos valores para id sería muy difícil capturar todos los elementos relacionados conmigo. ¿Acaso también debería haber un elemento con id federico-posts, otro con federico-localidad? Además, suponiendo que el elemento con id federico-life fuera el contenedor, el valor empty para status, en cierta mágica forma, prohíbe que existan otros elementos dentro (cuando en realidad existen y no están vacios).

En en comentario 3 de Nirvana la propuesta es:

Federico.life=empty

Es muy interesante el uso de objetos, pero (si mi conocimiento de programación no me traiciona) él estaría cambiando el valor de life a empty cuando, en realidad, life bien podía contener algo. ¡Mi vida no es una constante a la que pueden definirle el valor que quieran; es una variable sobre la que no tiene control!

En el comentario 6 de Diego la propuesta es:

profile#Federico {
user-agent: url(http://www.opera.com); 
language-known: "xhtml 1.0", html, css 1, css 2; 
_life: empty; 
}

Pero el navegador que uso (user-agent) y los lenguajes que conozco (language-known) son parte de mí. ¡Si los estilos (la parte decorativa) desaparecen, esos datos no cambian! Sumado a lo anterior, alguien podría querer parsear esos datos, por lo que dejarlos en una hoja de estilo es muy desaconsejable.

Todas las demás propuestas ya son más surrealistas por lo que no pueden ser criticadas.

Lo siento, pero no hice trampa, sólo aproveche la estructura de un documento y recordé que a un documento se le pueden asociar diferentes hojas de estilos. Aunque la hoja de estilos quiera poner miles de colores, autor#federico life siempre va a poder ser seleccionable con :empty.

Si entendieron algo de todo esto, ¡felicitaciones! Prometo volver a hacerlo.

Powered by Blogger