Armonía | En definitiva...

Estás viendo las entradas catalogadas dentro de la categoría "Web Semántica".

Un pequeño pensamiento sobre los tags

  • Miércoles, 26 de Octubre de 2005 a las 08:42 CET
  • Guardado en: Web Semántica

De un tiempo a esta parte se ha puesto de moda el uso de los denominados tags, (etiquetas), para organizar y marcar el contenido en nuestras webs. Aplicaciones de la llamada "Web 2.0" como Flickr o del.icio.us hacen un uso extensivo de esta nueva forma de organización, usándola además no sólo por cada usuario, sino también en global, unificando todos los tags y mostrando información al respecto: nace así la denominada folksonomy.

Al tiempo de que los tags se pusieran de moda, montones y montones de blogs adaptaron esta forma de organización en sus CMS, dándoles un toque moderno y a la última, y también, por qué no, una sencillez y una facilidad pasmosas a la hora de organizar sus nuevos posts.

Yo, desde mi punto de vista, no considero que los tags sean la mejor forma de organizar un blog, al menos no en solitario. Me explico: no considero que los tags sean la panacea para la organización de contenidos en la web, sino más bien son un complemento de la misma, (además de añadir una metainformación de incalculable valor a los contenidos). Pero como forma de organización principal no lo considero adecuado.

A mi modo de ver, en un blog debe existir una "categorización clásica", con ocho o nueve categorías, (o las que se necesiten, sin ser excesivos), y opcionalmente, si se quiere, una serie de tags que añadan más información y organización al respecto de cada post. Así, y por poner un ejemplo rápido, esta entrada está clasificada dentro de la categoría "Web semántica". Si este blog tuviese tags, podría seguir teniendo este post dentro de la misma categoría, y además, como complemento, añadirle los tags: "folksonomias", "etiquetas", "blogs", "pensamientos-de-juan", "opinion", y un largo etcétera que me ayudaría a complementar el post, guardado de manera principal bajo la categoría "Web semántica".

Esta es mi opinión. En los blogs, los tags en solitario no son la mejor manera de organizar la información. Quizá en otras aplicaciones, como Flickr tal vez, sí lo sea, pero esa es otra historia.

Atom: Una pequeña introducción

  • Martes, 11 de Octubre de 2005 a las 12:53 CET
  • Guardado en: Sindicación
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Revisando documentación para una pequeña idea que tengo en mente, me topé con este fantástico documento introductorio sobre la tecnología Atom. Y aprovechando la ocasión, voy a hacer una "traducción libre" para que podais disponer de ella como gusteis, pero recordad que el texto original es de la AtomEnabled Alliance y que esto es sólo una traducción libre.

¿Que es Atom?

Atom es el nombre de un formato de sindicacion para contenidos y metadatos basado en XML, además de un protocolo para la publicación y edición de recursos Web en sitios que se actualizan con frecuencia.

Todos los feeds Atom deben ser documentos XML bien formados, y se han de identificar con el media type application/atom+xml

Consideraciones generales:

  • Todos los elementos descritos en este documento deben estar en el namespace http://www.w3.org/2005/Atom
  • Todas las fechas en Atom deben corresponderse al RFC 3339
  • A no ser que se especifique lo contrario, todos los valores deben estar en texto plano, (p. ej., nada de texto HTML codificado con entidades)
  • xml:lang puede usarse para identificar el lenguaje de cualquiero texto legible para las personas
  • xml:base puede usarse para controlar cómo se resuelven las URI relativas

Feed Atom de ejemplo

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Example Feed</title>
  <link href="http://example.org/"/>

  <updated>2003-12-13T18:30:02Z</updated>
  <author>
    <name>John Doe</name>
  </author>
  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>

  <entry>
    <title>Atom-Powered Robots Run Amok</title>
    <link href="http://example.org/2003/12/13/atom03"/>
    <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>

    <updated>2003-12-13T18:30:02Z</updated>
    <summary>Some text.</summary>
  </entry>

</feed>

Elementos de <feed>

Un feed está formado por algunos metadatos seguidos por una serie de entradas.

Elementos requeridos en <feed>

Aquí tenemos una lista de los elementos obligatorios en un feed, cada uno con una pequeña explicación y un ejemplo.

id
Identifica al feed usando una única y permantente URI.
<id>http://example.com/</id>
title
Contiene el título del feed, (en un formato legible para las personas). Normalmente es el mismo que el del sitio Web al que está asociado el feed. Esta valor no puede estar en blanco.
<title>Example, Inc.</title>
updated
Indica la última vez que el feed fué modificado de alguna forma significativa.
<updated>2003-12-13T18:30:02Z</updated>

Elementos recomendados dentro de <feed>

Atom tiene una serie de elementos recomendados que deberías tener en cuenta. Estos elementos son:

author
El nombre del autor del feed. Un feed puede tener diversos autores, y por tanto diversos elementos author, pero como mínimo ha de tener uno, a no ser que todos los elementos entry tengan al menos un elemento author.
<author>
  <name>John Doe</name>
  <email>JohnDoe@example.com</email>
  <uri>http://example.com/~johndoe</uri>
</author>
link
Identifica una página Web relativa al feed. El tipo de relación viene definido por el atributo rel. Un feed está limitado a un elemento link con un rel con valor alternate por type y hreflang. Un feed debería tener un enlace referenciandose a si mismo. Ejemplo:
<link rel="self" href="/feed" />

Elementos opcionales dentro de <feed>

Aquí hay una lista de elementos opcionales que pueden estar en <feed>:

category
Especifica una categoría a la que el feed pertenece. Un feed puede pertenecer a diversas categorías, por lo que puede tener diversos elementos category.
<category term="sports"/>
contributor
Especifica un colaborador en la creción del feed. Un feed puede tener más de un elemento contributor.
<contributor>
  <name>Jane Doe</name>
</contributor>
generator
Identifica el software usado para generar el feed. Esta información se usa para operaciones de debugging por ejemplo. Tanto el atributo uri como el atributo version son opcionales.

<generator uri="/myblog.php" version="1.0">
  Example Toolkit
</generator>
icon
Identifica una imagen pequeña que da una información visual icónica del feed. Los iconos han de ser cuadrados.
<icon>/icon.jpg</icon>
logo
Identifica una imagen mayor que ofrece una identificación visual para el feed. Las imágenes deberían ser el doble de anchas que de largas.
<logo>/logo.jpg</logo>
rights
Especifica información sobre los derechos del feed, como por ejemplo el copyright.
<rights> © 2005 John Doe </rights>
subtitle
Contiene una descripción o un subtítulo para el feed. Debe estar escrita en un formato entendible por personas.
<subtitle>all your examples are belong to us</subtitle>

Elementos en <entry>

Un ejemplo de "entrada" sería un post en un weblog.

Elementos requeridos en <entry>

Aquí hay una lista de los elementos requeridos dentro del elemento entry, junto con una breve descripción y un ejemplo.

id
Identifica la entrada usando una URI permanente y universal. Dos entradas pueden tener el mismo id si ambas representan a la misma entrada en diferentes momentos.
<id>http://example.com/blog/1234</id>
title
Contiene un título para la entrada en formato legible por personas. Este valor no puede quedar en blanco.
<title>Atom-Powered Robots Run Amok</title>
updated
Indica la última vez que la entrada fué modificada de manera significativa. Este valor no necesita ser cambiado después de una modificación pequeña, como por ejemplo una corrección ortográfica. Como norma general, cada entrada tendrá un valor distinto en este elemento.
<updated>2003-12-13T18:30:02-05:00</updated>

Elementos recomendados en <entry>

Atom tiene una serie de recomendaciones para el elemento entry que deberías tener en cuenta:

author
Nombra un autor de la entrada. Una entrada puede tener diversos autores, y debe contener al menos un elemento author a no ser que exista, como mínimo, un elemento author para el elemento feed.
<author>
  <name>John Doe</name>
</author>
content
Contiene o enlaza al contenido de la entrada. El elemento content es obligatorio si no hay un elemento link alternativo, y debería ofrecerse si no hay un elemento summary.
<content>complete story here</content>
link
Especifica una página Web relacionada con la entrada. El tipo de la relación viene definida por el atributo rel. Una entrada sólo puede tener un enlace con el atributo rel con valor alternate por type y hreflang. Además, una entrada debe contener un link con un rel con valor alternate si no contiene un elemento content.
<link rel="alternate" href="/blog/1234"/>
summary
Contiene un pequeño resumen o parte del comienzo de una entrada. El elemento summary debería ofrecerse si no hay un elemento content para la entrada, o si el contenido de content está especificado en linea, (p. ej., a través del atributo src), o si el contenido está codificado como base64.
<summary>Some text.</summary>

Elementos opcionales en <entry>

Aquí hay una lista de elementos opcionales dentro del elemento <entry>

category
Especifica una categoría a la que pertenece la entrada. Una entrada puede tener más de una categoría, por lo que el elemento entry puede contener más de un elemento category
<category term="technology"/>
contributor
Nombra un colaborador que haya participado en la creación de la entrada. Una entrada puede tener más de un colaborador.
<contributor>
  <name>Jane Doe</name>
</contributor>
published
Contiene la fecha de publicación de la entrada
<published>2003-12-13T09:17:51-08:00</published>
source
Si una entrada se ha copiado de un feed a otro, entonces los metadatos del feed original, (todos los elementos hijos del elemento feed que no sean elementos entry), deberían conservarse si el feed de origen contiene alguno de los elementos author, contributors, rights o category y esos elementos no están presentes en el elemento entry de orígen.

<source>
  <id>http://example.org/</id>
  <title>Fourty-Two</title>
  <updated>2003-12-13T18:30:02Z</updated>
  <rights>© 2005 Example, Inc.</rights>
</source>
rights
Contiene información sobre los derechos sobre la entrada, (p. ej., el copyright).
<rights type="html"> © 2005 John Doe </rights>

Construcciones comunes

Categoría

El elemento category tiene un atributo obligatorio, term, y dos atributos opcionales, scheme y label.

  • term identifica la categoría
  • scheme identifica el esquema de categorización mediante una URI
  • label da a la categoría un nombre legible por personas

Contenido

El elemento content contiene o bien un enlace al contenido de la entrada, o bien el contenido en si mismo.

En la mayoría de los casos, el atributo type tiene como valor text, html o xhtml, e indica el formato del texto que contiene.

Por otro lado, si el atributo src está presente, éste identifica una URI donde se puede encontrar el contenido. En este casi, si el atributo type está presente, indica el media type del contenido.

Si el atributo type termina con +xml o /xml, entonces un documento xml del tipo definido está contenido en linea.

Si el atributo type empieza con text, entonces significa que un documento en linea sin marcar está contenido en el elemento.

Enlace

El elemento link tiene un atributo requerido, href, y cinco atributos opcionales: rel, type, hreflang, title y length.

href contiene una URI para el recurso especificado, (normalmente una página Web).

rel contiene el tipo de relación del enlace. Puede ser una URI completa o uno de los siguientes valores predefinidos, (el valor por defecto es alternate):

  • alternate: especifica que el enlace es una representación alternativa de la entrada o del feed, por ejemplo un permalink o una versión HTML de la entrada, o bien la página principal de un blog.
  • enclosure: un recurso asociado que es demasiado grande en tamaño y que puede requerir un tratamiento especial, como por ejemplo una grabación de audio o de video.
  • related: un documento relacionado con la entrada o el feed
  • self: el feed en si mismo
  • via: la fuente de información que ha propiciado la entrada

type indica el media type del recurso.

hreflang indica el lenguaje del recurso referenciado.

title indica un texto informativo en formato legible por personas sobre el enlace, normalmente se usa como nombre para el enlace.

length indica el tamaño del recurso, en bytes.

Persona

author y contributor describen una persona, corporación o entidad similar. Tiene un elemento obligatorio, name, y dos opcionales, uri y email.

name especifica un nombre para la persona en formato legible para usuarios no-máquinas.

uri contiene la página principal de la persona, (normalmente su página personal, blog o similar).

email contiene la dirección de correo electrónico de la persona.

Texto

title, summary, content y rights contienen texto legible por personas, normalmente en pequeñas cantidades. El atributo type determina la forma en la que esta información está codificada, (el valor por defecto es text):

Si type="text", entonces el elemento contiene texto plano sin código HTML escapado.

<title type="text">AT&amp;T bought by SBC!</title>

Si type="html", entonces el elemento contiene caracteres HTML escapados.

<title type="html">
  AT&amp;amp;T bought &lt;b&gt;by SBC&lt;/b&gt;!
</title>

Si type="xhtml", entonces el elemento contiene XHTML en linea, englobado en un elemento div.

<title type="xhtml">
  <div xmlns="http://www.w3.org/1999/xhtml">
    AT&amp;T bought <b>by SBC</b>!
  </div>
</title>

Los microformatos y la semántica: Vote Links

  • Martes, 20 de Septiembre de 2005 a las 09:56 CET
  • Guardado en: Web Semántica
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Continuando con los microformatos, hoy vamos a comentar uno de los que más me gustan: el microformato Vote Links. Gracias a este microformato podemos "votar", (positiva o negativamente), los enlaces que queramos. Gracias a este "voto", se podría, por ejemplo, sacar un listado de los enlaces que consideramos de calidad.

La forma de usar este microformato es muy sencilla. Como en todos de ellos, hay que colocar ciertos valores en un determinado atributo para el elemento que queramos marcar. En este caso, el elemento a marcar será un hipervínculo, y el atributo que usaremos será rev, (en versiones antiguas se usaba rel, pero acabó desechandose ya que no reflejaba correctamente la relación del enlace con el documento enlazado, aunque para mantener la compatibilidad las aplicaciones que vayan a manejar este microformato deben tener en cuenta el atributo rel).

Los valores que puede tomar el atributo rev para este microformato son tres:

rev="vote-for"
Este valor se debe usar cuando queremos dar un "voto" positivo al enlace que marquemos. Cuando damos un "voto" positivo a un enlace estamos indicando que recomendamos, o que estamos de acuerdo con lo que se dice en la página que enlazamos.
rev="vote-abstain"
Cuando marcamos un enlace con este valor en el atributo rev estamos indicando que no votamos ni positiva ni negativamente. Es decir, ni recomendamos, ni indicamos que no estamos de acuerdo con lo dicho en la página enlazada.
rev="vote-against"
Marcando con este valor un enlace estamos indicando que no recomendamos, o que no estamos de acuerdo, con la página enlazada. Le estamos dando un "voto" negativo.

Y para terminar, nada mejor que unos ejemplos de su uso:

<p><a href="http://pviojo.net/posts/microformatos-los-bloques-de-la-web-semantica/" title="Artículo de Pablo Viojo sobre los microformatos" rev="vote-for">Microformatos: Los bloques de la Web semántica</a></p>
<p><a href="http://www.16bits.net/archivos/argentina-cuando-las-cosas-no-funcionan/" title="Artículo de Rodrigo Galindez sobre el estado burocrático en Argentina" rev="vote-abstain">Argentina, cuando las cosas no funcionan</a></p>
<p><a href="http://www.alt1040.com/archivo/2005/09/19/algunos-pensamientos-sobre-comentarios-en-los-blogs/" title="Artículo de Eduardo Arcos sobre su concepción de los comentarios en los blogs" rev="vote-against">Algunos pensamientos sobre los comentarios en los <span xml:lang="en">blogs</span></a></p>

Tal y como podeis ver he marcado tres enlaces, y he usado el atributo rev para marcar mi "voto" a cada uno de ellos. Con el primero, de Pablo Viojo, en el que hace una pequeña introducción a los microformatos, estoy totalmente de acuerdo, y me parece un artículo bueno y digno de recomendación, así que lo he marcado con rev="vote-for"

El segundo, de Rodrigo Galindez, es un artículo del que no puedo opinar realmente, ya que habla sobre el estado de los temas burocráticos en Argentina, cosa de la cual no sé absolutamente nada. Por tanto la marco con rev="vote-abstain".

Y para terminar, he marcado con rev="vote-against" un artículo de Eduardo Arcos, en el que expone su opinión sobre cerrar los comentarios en los blog, opinión con la que no estoy de acuerdo.

Enlaces de interés

Los microformatos y la semántica: hCalendar

  • Sábado, 17 de Septiembre de 2005 a las 16:40 CET
  • Guardado en: Web Semántica
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Después de unos días retomamos el tema de los microformatos, (rel="license", hCard, rel="nofollow", rel="tag"), esta vez para hablar de un microformato "de los gordos", el microformato hCalendar.

Como el microformato hCard, hCalendar está basado en un estándar, el iCalendar, usado por ejemplo en la aplicación iCal de Mac. Como ya os imaginareis, hCalendar se usa para marcar con XHTML cualquier tipo de evento, con sus fechas, lugar, etc.

Como siempre, como mejor se ven las cosas es con ejemplos, así que vamos a marcar un evento con iCalendar, a ver qué tal queda:

<div class="vevent">
<p>
<a class="url" href="http://www.findelmundo.org/">
<abbr class="dtstart" title="20051001">1 de Octubre</abbr> - <abbr class="dtend" title="20051002">2 de Octubre  </abbr> <span class="summary">Fin del mundo </span> - en <span class="location">el Planeta Tierra </span>
</a>
</p>
<p class="description">Nos vamos todos a tomar por culo.</p>
</div>

Como podeis ver, he englobado todo dentro de un div con class="vevent", para marcar que contiene datos relativos a un evento marcado con hCalendar. Dentro de ese div está la información del evento, que también he marcado aproviadamente.

Para marcar un enlace hacia una página con información relevante sobre el evento he usado el atributo class="url". El texto del enlace puede ser el que queramos, incluso más datos del evento, ya que lo que interesa del enlace es la URL, contenida en el atributo href.

Otro dato importante que hay que marcar convenientemente es el resumen, (summary), del evento. Para no complicarse la vida lo mejor es colocar en este dato el nombre del evento, y marcarlo con su correspondiente class="summary". Normalmente, junto al nombre del evento se suele colocar el lugar donde se celebra. Este dato hemos de marcarlo con class="location". No hay que olvidar que los elementos que usemos para marcar los datos no tienen por qué ser únicamente div o span, de hecho tienen preferencia aquellos elementos con mayor semántica para el documento.

Un punto con el que no estoy muy de acuerdo con la especificación del microformato es el relativo a las fechas, tanto de comienzo como de final. En la especificación se recomienda marcarlas con abbr, cuyo texto sería la fecha en formato "humanizado", y en su title se colocaría la fecha en "formato máquina". Yo para nada usaría abbr, no me parece lógico, pero como así lo dice la especificación, así lo reproduzco yo.

La fecha de comienzo del evento se ha de marcar con el atributo class="dtstart", para la fecha de fin se debe usar class="dtend". Recordar que para la fecha "formato máquina", colocada en el title del abbr se ha de usar el formato: AAAA-MM-DD.

Por último, en mi ejemplo he escrito también una pequeña descripción del evento, la cual hay que marcar con class="description". Por supuesto hay muchos más datos que se pueden colocar, los podeis encontrar todos en el estándar de iCalendar.

Los microformatos y la semántica: rel="tag"

  • Martes, 13 de Septiembre de 2005 a las 15:34 CET
  • Guardado en: Web Semántica
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Otro día más vamos a comentar a modo de introducción un microformato, en esta ocasión el microformato rel="tag", destinado a marcar enlaces a páginas de un tag en concreto.

Con todo esto de la, (mal llamada a mi parecer), Web 2.0, y la moda de las folksonomies, los tags se han convertido en una forma "buena, bonita y barata" de catalogar contenido. Por este motivo surge el microformato rel="tag".

Para poder usar este microformato se deben seguir una serie de reglas básicas:

  • El texto del enlace ha de ser el tag en cuestión
  • La página a la que enlacemos debe ser la página que muestre la información catalogada bajo ese tag
  • La URL del enlace debe tener, en el último segmento de la ruta, el tag que estemos marcando, (si contiene espacios se traducen a su entidad para URL)

Siguiendo estas directrices, podemos marcar los tags que mostremos en nuestras páginas con el microformato rel="tag". Por ejemplo, para marcar un enlace al tag "miventana", (donde guardo una serie de fotos hechas desde la ventana de mi habitación en Los Barrios):

<a href="http://flickr.com/photos/spiral-static/tags/miventana/" hreflang="en" title="Página con mis fotos marcadas con el tag: miventana" rel="tag">miventana</a>

Hay que recordar que los enlaces marcados con el microformato rel="tag" han de ser enlaces visibles, por tanto no podríamos marcar un elemento link del head con este microformato.

Los microformatos y la semántica: rel="nofollow"

  • Lunes, 12 de Septiembre de 2005 a las 15:16 CET
  • Guardado en: Web Semántica
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Hace ya algunos meses salto a la palestra de los blogs una iniciativa de Google para evitar el spam en los comentarios: se dió a conocer el microformato rel="nofollow".

Desde ese momento, infinidad de blogs dieron su opinión al respecto, algunas favorables y otras desfavorables, pero desde luego no pasó desapercibido. Es por esto que lo más probable sea que a estas alturas todos conozcamos qué es y cómo se usa este microformato, pero de todas formas voy a comentarlo por si queda algún rezagado.

El microformato rel="nofollow" está pensado para especificar que un hipervínculo con este atributo no debe intervenir en el análisis por parte de los robots de búsqueda. Siguiendo un ejemplo simple:

<a href="http://www.yonkis.com/" title="Página principal de Yonkis.com" rel="nofollow">Yonkis</a>

Como podéis ver en el código anterior, el elemento a tiene el atributo rel="nofollow". Esto viene a significar que cualquier motor de búsqueda, (tipo Google, etc.), no debería tomar este enlace en cuenta a la hora de realizar sus cálculos para el resultado de las búsquedas y la generación de sus rankings. Es decir, Yonkis, a ojos de los motores de búsqueda, no recibiría ningún enlace de nuestra parte si nosotros hemos marcado ese enlace con rel="nofollow".

Los microformatos y la semántica: hCard

  • Domingo, 11 de Septiembre de 2005 a las 16:08 CET
  • Guardado en: Web Semántica
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Retomando el tema de los microformatos, hoy me gustaría comentar un poco algunos aspectos del microformato destinado a marcar los datos de cualquier persona: hCard.

Tal y como se puede leer en la especificación, el microformato hCard está basado en el estándar vCard, y permite, usando las mismas propiedades que vCard, marcar con XHTML todos los datos de una persona de manera semántica. Gracias a este microformato, los autores de documentos Web podrán incluir datos vCard directamente en sus documentos con XHTML, sin necesidad de utilizar documentos vCard externos. Además, aplicaciones específicas podrán recopilar datos vCard directamente de los documentos.

El uso del microformato hCard es relativamente sencillo, tan sólo hay que seguir unas determinadas reglas, incluidas todas en la especificación del microformato.

Lo primordial es encerrar todas las etiquetas que vayan a englobar los datos personales en una etiqueta de nivel superior con un atributo class cuyo valor sea "vCard". Comunmente este elemento sera un div, pero conviene recordar que si podemos usar un elemento más adecuado, ya sea porque aporta más sentido semántico o por cualquier otro motivo, lo usaremos.

<div class="vcard">
<p>Juan Hurtado</p>
<p>Los Barrios, (Cádiz)</p>
<p><a href="mailto:juan.g.hurtado@gmail.com" title="e-Mail del autor del blog">juan.g.hurtado@gmail.com</a></p>
<p><a href="http://armonia.spiral-static.org/" title="Armonía | En definitiva...">http://armonia.spiral-static.org/</a></p>
</div>

Como podeis ver en el ejemplo anterior, he encerrado algunos de mis datos personales en un elemento div cuyo atributo class tiene como valor la cadena "vcard". Eso, según el microformato, indicará que los datos contenidos dentro del div van a corresponder a una serie de datos personales.

El siguiente paso sería marcar cada uno de los datos personales que contiene la etiqueta <div class="vcard">. Para marcar estos datos se sigue un proceso parecido al anterior, se marcan con el atributo class los elementos que contengan el dato al que deseemos dar un valor específico. Los valores que se deben poner en el atributo class vienen determinados por la especificación del estándar vCard.

Cada dato de la ficha vCard viene identificado por un identificador específico, así, en hCard, marcaremos cada dato con su identificador concreto en su atributo class. Siguiendo con el ejemplo anterior, marcaremos cada dato de forma correcta usando el microformato hCard:

<div class="vcard">
<p class="fn">Juan Hurtado</p>
<p class="adr"><span class="locality">Los Barrios</span>, (<span class="region">Cádiz</span>)</p>
<p><a class="email" href="mailto:juan.g.hurtado@gmail.com" title="e-Mail del autor del blog">juan.g.hurtado@gmail.com</a></p>
<p><a class="url" href="http://armonia.spiral-static.org/" title="Armonía | En definitiva...">http://armonia.spiral-static.org/</a></p>
</div>

Como podeis observar, he marcado cada dato de mi ficha hCard con su atributo class con el valor correspondiente al dato en cuestión. Esta ficha no está completa, existen infinidad de datos posibles. Los podeis encontrar todos en el perfil XMDP del microformato hCard, o bien en la especificación del estándar vCard

Los que yo he usado son:

class="fn"
Representa el friendly name de la persona a la que representa la vCard. La primera palabra contenida en la etiqueta marcada con este atributo corresponde al nombre del individuo, (class="n"), y la segunda al Family Name, o apellido familiar, (class="family-name")
class="adr"
Indica que todos los datos contenidos dentro de la etiqueta marcada con este atributo forman parte de la dirección del individuo.
class="locality"
Indica la localidad o ciudad donde vive el individuo. La etiqueta marcada con este atributo ha de estar englobada por otra etiqueta con class="adr".
class="region"
Indica la región, provincia, estado, etc. donde vive el individuo. La etiqueta marcada con este atributo ha de estar englobada por otra etiqueta con class="adr".
class="email"
Normalmente se usa en un elemento a. Indica la dirección de correo electrónico del individuo.
class="url"
Normalmente se usa en un elemento a. Indica la URL de la página personal del individuo.

Los microformatos y la semántica: rel="license"

  • Jueves, 08 de Septiembre de 2005 a las 21:19 CET
  • Guardado en: Web Semántica
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Los microformatos se han alzado como una propuesta muy interesante para extender de forma simple el uso de la semántica en la web. Desde microformats.org, con gente como Dan Cederholm detrás, se han generado varias especificaciones de diversos microformatos, listos para poder usar y así, poco a poco, aumentar su importancia dentro de la red y, por qué no decirlo, mejorar y "humanizar" la Web.

Desde aquí, y tomando ejemplo de Pablo Viojo en su post Microformatos: Los bloques de la Web semántica, voy a escribir algunos posts relacionados con el tema, tratando de explicar de forma sencilla algunos de los microformatos existentes.

El primero de estos posts va a tratar sobre el microformato rel="license", un microformato realmente sencillo, y que sirve para marcar los enlaces a la licencia de la página en la que se utilice, bien sea la licencia de nuestro blog, de una página con un software desarrollado por nosotros, etc.

Su especificación en microformats.org es de las más simples que se pueden encontrar, y se puede resumir en lo siguiente: Coloca el atributo rel con el valor "license" en cualquier enlace que referencie la licencia de la página actual. Un ejemplo, sacado de este blog:

<a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" title="Licencia de este Blog" rel="license"><abbr title="Attribution-NonCommercial-ShareAlike" xml:lang="en">by-nc-sa</abbr> 2.5</a>

Como podeis ver es extremadamente sencillo, así que ya no teneis excusas para empezar a usar microformatos en vuestros documentos. Y no me digais que no teneis oportunidad, porque todos tenemos un blog con una licencia Creative Commons en el pie...

Carga semántica en XHTML: address

  • Domingo, 04 de Septiembre de 2005 a las 00:05 CET
  • Guardado en: XHTML
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Después de todos los elementos que ya hemos visto en esta serie de artículos relacionados con la carga semántica en los documentos XHTML, (disponibles todos en la sección XHTML de este blog), ya no quedan demasiados por revisar. Pero hoy, leyendo algunos correos electrónicos de la lista de distribución de Ovillo, he recordado un elemento del que todavía no hemos hablado, el elemento address.

No es un elemento para nada común, y la verdad es que lo he visto siendo utilizado en muy pocas ocasiones. De hecho yo mismo no hago uso de él en este blog, (estudiaré si es necesario o no). Como decía, es un elemento muy poco común, pero que, dado el caso de poder usarlo, no debemos dudarlo ni un instante, ya que añade un sentido muy específico al texto que marquemos, y mejorará la semántica global de nuestro documento.

El elemento address se usa para especificar una dirección de contacto con el autor del documento. Esta dirección puede ser tanto física como virtual, es decir, puede ser la dirección del hogar, de la oficina, o incluso el teléfono, o bien simplemente la dirección de correo electrónico del autor. Sea como sea, cualquier tipo de dirección desde la cual se pueda contactar con el autor del documento se debe marcar con el elemento address.

Un ejemplo del uso del elemento address podría ser:

<p>
<address>Pepe Pérez, en la Calle de la Piruleta número 15</address>
</p>

Conviene recordar que address es un elemento en línea, por lo que se debe colocar dentro de un elemento en bloque, como en el ejemplo, que lo hemos colocado dentro de un párrafo.

El uso de este elemento puede parecer un poco quisquilloso, pero si existe, y tiene una función definida que puede ayudar a mejorar el sentido de nuestros documentos, creo que debería usarse. Eso sí, única y exclusivamente cuando la situación lo requiera.

Formularios y mensajes de error

  • Domingo, 24 de Julio de 2005 a las 19:49 CET
  • Guardado en: XHTML
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Una parte muy a tener en cuenta a la hora de desarrollar nuestras aplicaciones Web son los formularios. Estos han de ser simples, consistentes, comprensibles, accesibles, etc. En este artículo de hoy voy a enseñaros la forma en la que suelo hacer mis formularios, y los motivos por los que he elegido determinados detalles que acostumbro a usar.

Para hacer más sencilla la comprensión de todo esto he creado un sencillo ejemplo con un mismo formulario dividido en tres estados distintos, donde cada uno de ellos muestra una etapa de la "vida de un formulario".

Primera etapa: Formulario en estado normal

La primera etapa de todo formulario es aquella en la que nos lo encontramos por primera vez, impoluto, limpio completamente, esperando ser cumplimentado y enviado.

Es una etapa muy importante, ya que debemos conseguir que de un simple vistazo el formulario sea comprensible para el usuario. Y por si fuera poco, hemos de usar nuestro lenguaje de marcado favorito de forma correcta, preocupándonos además por la accesibilidad del formulario.

Hay diversas cosas que suelo realizar siempre que hago un formulario. Una de ellas es englobarlo con el elemento fieldset con un atributo title bien descriptivo, y colocándole su correspondiente legend:


<fieldset title="Formulario general en estado normal que realiza una función determinada">
  <legend>Formulario general en estado normal</legend>
</fieldset>

Otra cosa imprescindible es el uso de los label. A todos los controles del formulario, salvo a los botones, les coloco su label correspondiente. Debo destacar que normalmente acostumbro a englobar todo el control con el label además de usar el atributo for de este, me explico:

<label for="cajaTexto1">Caja de Texto 1 <span class="obligatorio">(Obligatorio)</span><br />
  <input type="text" id="cajaTexto1" name="cajaTexto1" maxlength="255" title="Caja de Texto. (Campo obligatorio, con un límite de 255 caracteres.)" />
</label>

Como podeis ver, toda la caja de texto se encuentra englobada dentro de un label, y este a su vez hace uso del atributo for para referenciar a la caja de texto. Hay personas que sólo hacen uso del atributo for, pero hay algunos agentes de usuario que todavía no soportan esta forma de referenciación, así que procuramos mantener ambas formas para evitar incompatibilidades.

Si os fijais, la caja de texto usa el atributo maxlength, que nos permite limitar el número de caracteres que van a poder introducirse en ella. Si se conoce este límite, es más que recomendable hacer uso de este atributo, para ahorrarnos sustos si, por ejemplo, los datos van a guardarse en una Base de Datos y al usuario le da por meter un capítulo entero de El Quijote.

Además también es recomendable dotar a todos y cada uno de los controles del formulario del atributo title, explicando brevemente qué se debe hacer en ese control, y si es posible, informar de las limitaciones: obligatorio o no, tipos de datos que acepta, (sólo números, sólo letras, etc.) Con respecto a este mismo tema, en el texto del label, y para que el usuario tenga acceso a esta información a golpe de vista, suelo añadir también de forma muy breve, las limitaciones del campo. Las englobo en un span para poder manejarlas posteriormente de forma sencilla con CSS.

Por destacar otro detalle, en el ejemplo podéis ver que en el desplegable hago uso de optgroup para dividir los grupos de elementos que componen el control. Es importante que useis este elemento si vuestros desplegables necesitan subdividir en grupos los elementos, nada de usar option con guiones ni nada de eso.

<label for="combo">Desplegable <span class="obligatorio">(Obligatorio)</span><br />
  <select id="combo" name="combo" title="Desplegable con 5 opciones divididas en 2 grupos. (Obligatorio elegir una opción)">
    <optgroup label="Grupo 1">
      <option selected="selected" value="1">Opción 1</option>
      <option value="2">Opción 2</option>
    </optgroup>
    <optgroup label="Grupo 2">
      <option value="3">Opción 3</option>
      <option value="4">Opción 4</option>
      <option value="5">Opción 5</option>
    </optgroup>
  </select>
</label>

Ver ejemplo para el formulario en estado normal

Segunda etapa: Formulario con mensajes de error

Esta etapa, obviamente, no siempre va a ocurrir, pero debemos tener especial cuidado a la hora de controlarla, porque un formulario con mensajes de error poco claros, e incluso liosos o inexistentes, hará que todo el proceso se vaya al garete.

Mis formularios suelen tener tres formas de aviso distintas para los errores:

  • Mensaje general con una lista de puntos a comprobar
  • Estilos CSS distintos en los controles incorrectos
  • Mensaje informativo breve junto a cada control incorrecto

Todos estos mensajes han de destacar de forma muy clara por encima del aspecto normal del formulario, para que así el usuario pueda localizarlos y comprenderlos sin el menor esfuerzo.

Si observais el ejemplo, lo podreis ver claramente. Tonos rojos para todos los mensajes, un grosor de borde significativo para los controles incorrectos, y un pequeño texto junto a cada uno de ellos.

Mirando el código del mensaje general justo al comienzo del fieldset os dareis cuenta de que he usado el elemento big con un span interno que contiene un texto llamativo que luego oculto con CSS. Esto lo hago pensando en los usuarios que no tienen los estilos CSS activados. Puesto que no se percataran de los estilos con tonos rojos y demás, les doy un elemento "distinto" y un texto impactante para que su atención se centre sobre el mensaje de forma más sencilla.

<div class="mensaje error">
  <p><big><span>*** !ATENCIÓN!</span> Encabezado error</big></p>
  <p>Etiam porta semper nisl. Aenean lacus risus, condimentum id, pharetra in, dictum vel, quam. Maecenas non mauris ut dolor cursus dignissim.</p>
  <ul title="Lista de puntos a verificar">
    <li>Debes rellenar el campo obligatorio "Caja de Texto 1"</li>
    <li>El campo "Caja de Texto 2" no tiene un formato correcto. Sólo se aceptan caracteres alfanuméricos</li>
  </ul>
  <hr />
</div>

Ver ejemplo para el formulario con mensajes de error

Tercera etapa: Formulario ejecutado de forma satisfactoria

Esta es una etapa meramente informativa, y no es absolutamente necesario, ya que un formulario puede terminar con una redirección a otra página, con un mensaje simple porque no se necesite tener el formulario de nuevo, etc.

De todas formas la estructura es exactamente igual que la del mensaje general de errores de la etapa anterior, salvo que con unos estilos distintos en tonos "menos preocupantes" que el rojo. También, del mismo modo que antes, pienso en los usuarios con CSS desactivado colocando un mensaje llamativo que capte su atención incluso sin estilos.

Ver ejemplo para el formulario ejecutado satisfactoriamente

Paginación: 1 2 3

Búsqueda

Acerca de este blog

Armonía es el blog personal de Juan G. Hurtado, (C. V.). Aquí se tratarán muchos temas, pero sobre todo los relacionados con la programación, la tecnología, el desarrollo y los estándares en la World Wide Web.

Si quieres puedes visitar también las galerias de fotos guardadas en su cuenta Flickr, o su colección de enlaces en del.icio.us.

Velas en la oscuridad Mano del autor del blog en blanco y negro Trozo del paisaje desde la ventana del autor del blog Palma de la mano del autor del blog en blanco y negro

Lectura

CSS Mastery, de Andy Budd
Portada del libro Bulleproof Web Design
Muy buen libro, escrito por Andy Budd en el que nos muestra un repaso muy bien detallado por infinidad de técnicas ingeniosas para conseguir que nuestras hojas de estilo "hagan magia"
[Leer revisión]
Bulletproof Web Design, de Dan Cedelhorm
Portada del libro Bulleproof Web Design
Un libro genial en el que Dan Cedelhorm nos enseña cómo blindar nuestras páginas para evitar que se "rompan" ante configuraciones no habituales de los navegadores de los visitantes, (aparte de otras muchas cosas)
[Leer revisión]
Agile Web Development With Rails, de Dave Thomas y David Heinemeier
Portada del libro Agile Web Development With Rails
Una perfecta introducción a Ruby on Rails, el framework de desarrollo Web que está causando furor en estos momentos...
[Leer revisión]

Contacto

  • e-Mail: juan.g.hurtado@gmail.com
  • Jabber: juan.g.hurtado@jabberes.org
  • Skype: juan.g.hurtado
  • Messenger: the_micro_cuts@hotmail.com