2010-11-09 27 views
15

Tengo un argumento pedante que necesita resolución.Definición adecuada para "datos tabulares" en HTML

Como un buen bebedor koolaid cuando se trata de HTML, me refiero al marcado semántico. Como resultado, por supuesto odio ver las mesas donde no pertenecen. La regla de oro para las tablas es que solo debe usarlas para "datos tabulares", pero me ha llamado la atención que esta es una frase muy pobremente definida. Yo quería hacer los siguientes datos de una tabla, pero otras personas en mi oficina de acuerdo en que una mesa sería semánticamente correcto en este caso (en contraposición a un dl o ul, etc):

------------------ 
| SomeEmployee | 
|----------------| 
| Field | val | 
| Field | val | 
| Field | val | 
| Field | val | 
------------------ 

Preguntar por la oficina (y la interwebs), tengo algunas de las siguientes respuestas sobre lo que hace "tabla" datos:

  • "Cualquier cosa que usted pondría en una hoja de cálculo" (he visto maquetas completas de diseño creados en hojas de cálculo, por lo que este parece algo que me falta)
  • Datos que se asignarían bien a una base de datos tabla (p. datos de fila y columna, específicamente)
  • "Texto, texto preformateado, imágenes, enlaces, formularios, campos de formulario, otras tablas, etc." (gracias W3C, eso es realmente útil)

Y así sucesivamente. Ninguno de estos parece ser definiciones canónicas, y no proporcionan grandes líneas divisorias para tomar decisiones. Entonces, les pregunto, mis inteligentes compatriotas: cómo deberíamos definir los datos tabulares.

Si es posible, cite las fuentes de sus respuestas para evitar una cadena de respuestas "bueno, creo".

Gracias!

Joe

+0

Interesante pregunta. Relacionado (aunque sin una definición clara): http://en.wikipedia.org/wiki/Table_(information) –

+0

Mi contribución "bien, creo" sería * cualquier cosa que una tabla sea el elemento semánticamente más adecuado para *. Las listas con un elemento pertenecen a una lista ordenada o desordenada. Los pares 'Field/value' se muestran mejor por listas de definiciones. cualquier cosa más allá de eso necesita una mesa. –

+1

¿Qué hay de "cualquier estructura de datos que consta de múltiples elementos que están relacionados entre sí, ya sea en el eje xey"? –

Respuesta

13

Wikipedia tiene algunas reglas pies en la tierra en sus pautas de redacción de artículos internos. Están lejos de ser una definición exhaustiva, pero funcionan bien en el mundo real usan la OMI.

Toda la definición vale la pena leer, pero un párrafo me parece especialmente agradable:

Antes de formatear una lista en forma de tabla, considere si la información se transmitirá más claramente en virtud de tener filas y columnas. Si es así, entonces una mesa es probablemente una buena opción. Si no hay un beneficio obvio para tener filas y columnas, entonces una tabla probablemente no sea la mejor opción.

+0

+1 para este práctico recurso :) – alex

+0

(después de 2014) Vea también http://www.w3.org/TR/html/tabular-data.html#table-model –

12

El problema con su ejemplo es que está en dos columnas.

En ese límite, la distinción entre usar una etiqueta TABLE o una etiqueta DL se difumina un poco. La única forma de distinguir sería que en el dl, la etiqueta DT debería ser una etiqueta y el dd debería contener "datos". Si los "datos" que coloca en la etiqueta DT NO son una etiqueta (también conocida como metadatos) para la etiqueta DD, entonces debe usar una tabla. En su ejemplo, ese es un tipo de diccionario, definitivamente usaría una etiqueta dl.Usaría una tabla donde los datos en cada una de las dos columnas representan atributos INDEPENDIENTES de una cosa. Pero como digo, la distinción se difumina.

En su "tabla", la columna Campo me parece más como metadatos. Entonces la regla sería: siempre use la etiqueta más semánticamente específica. En este caso, un DL.

Lo que NUNCA haría es usar una etiqueta ul o ol para esto. Simplemente, son para listas de una sola columna. Además, no hay ningún requisito para que cada fila de la lista sea datos, es decir, atributos que representan una cosa dada. El contenido que se incluye en las etiquetas UL o OL no tiene metadatos asociados: las etiquetas UL y OL no proporcionan ninguna marca para los metadatos, a diferencia de las etiquetas DL y las etiquetas TABLE.

Avanzando hacia el aspecto más genérico de su pregunta, se aplica lo siguiente:

Al igual que con el verdadero amor, sabes de datos tabular cuando lo ves.

Y como con todo lo que sabes cuando lo ves, la definición precisa llenaría un volumen de filósofa indigerible. Para empezar, necesitaría definir qué quiere decir con datos antes de siquiera hacer la pregunta.

Con estas advertencias en mente, y sólo por el ejercicio mental, aquí vamos:

A.- TABULAR datos debe ser estructurado de datos: Los datos deben ser jerárquica o relacional. Con esto quiero decir que debería ser POSIBLE arrojar los datos a una u otra estructura (o a ambas).

Esto permite a las siguientes reglas que se derivan, que más o menos de bloqueo hacia abajo lo que puede ir en una tabla de datos, respondiendo de este modo a su pregunta y cumpliendo los requisitos del W3C para el uso de la etiqueta:

  1. atomicidad : Cada fila de datos debe representar una unidad individual de la misma cosa. Es decir, los datos en cada CELDA de la tabla DEBEN ser un atributo de lo que cada ROW de datos representa. Esto le dice rápidamente por qué algunas cosas deben ir en etiquetas UL: son LISTAS NO ESTRUCTURADAS, es decir, cada fila puede referirse a cosas muy diferentes, a diferencia de DATOS ESTRUCTURADOS, donde cada fila SIEMPRE representa una instancia diferente de una clase de cosa.

  2. CELDAS: Debería ser viable poner cada atributo de la cosa en una etiqueta (también conocida como celda). El contenido de cada celda debe ser datos; los elementos de diseño no están permitidos. Tenga en cuenta que esto excluye elementos accesorios como los encabezados de columna, que no deben usar etiquetas y deben usar la etiqueta funcionalmente más adecuada.

  3. DEFINICIÓN DE FILA O 'FORMATO' DE LOS DATOS: Los datos en cada fila() deben asignarse a un 'formato' predefinido. Por formato, me refiero a una lista de atributos que describen una cosa determinada. En lo que sigue, los términos atributo y columna se usan indistintamente.

  4. ORDEN DE COLUMNA: Este formato debe ser estrictamente ordenado. Es decir, el orden de las columnas no debe cambiar de una fila a otra.

  5. INDEPENDENCIA DE FILA: Los datos en cada fila no deben depender de los datos en otras filas. Tampoco debe depender de la existencia de ninguna otra fila. Los datos en cada fila solo dependen del 'formato'.

  6. INTEGRIDAD DE FILA: Los datos en cada fila deben cumplir con las restricciones definidas por el formato.

  7. DATOS RELACIONADOS: Se requiere una extensión de las reglas anteriores para tener en cuenta los datos relacionados y jerárquicos. Esto se hace fácilmente extendiendo el formato para permitir un tipo de columna que sea en sí mismo una tabla.

  8. En las reglas anteriores, en ninguna parte indica que las "columnas" se deben organizar horizontalmente. Esto permite que las filas tengan más "estructura" y aún cumplan con las reglas 0 - 6. Por ejemplo, se permite que aparezca una tabla secundaria de datos "secundarios" A CONTINUACIÓN de los datos correspondientes a su registro "principal". O no. O un campo Memo grande podría mostrarse las otras celdas. El hecho de que se trate de datos tabulares no significa que no pueda tener diseño.

  9. DATOS DE IMAGEN: una imagen de producto en un catálogo son datos. Sin embargo, en el caso de las imágenes, la restricción de la columna es que la imagen DEBE relacionarse con las otras "columnas" del "formato". Esto noquea, por ejemplo, un gif transparente que justs establece la altura física o el ancho de una fila. Ya que no tiene relación intrínseca con los otros datos en la fila, que no está cumpliendo con las normas 0 - 7.

B.- TABULAR datos no incluyen datos no estructurados. Esto es más de un corolario, pero se dirige a los "males" de la etiqueta:

  1. Todo lo que es el diseño, por ejemplo, en relación con el diseño de los contenidos y la página, en comparación con el contenido en sí mismo, no es de datos tabulares .

Lo anterior no hace más que utilizar una mierda para pulir la siguiente regla que usted mismo ha dicho en su pregunta:

Cualquier cosa que va en una hoja de cálculo o una tabla de base de datos, mientras que excluyendo los usos de las hojas de cálculo que hacen no se relaciona con los datos.

Lo que no es tontería es la afirmación obvia, aunque potencialmente vaga, de que los datos tabulares no son más que datos estructurados. Por estructurado, quiero decir que tiene que constituir una colección "fuertemente tipada".

De nuevo, observo que esta definición excluye el texto para encabezados de columna, pies de página, pies de página. En otras palabras, los datos tabulares son los que acompañan a la etiqueta tbody. Todo lo demás dentro de la etiqueta de la tabla son metadatos que hacen referencia a, pero no son parte de, los datos tabulares.

Las reglas anteriores definen los datos como algo que cumple con una restricción de columna.

Supongo que ahora necesita una definición de restricción de columna. Pero, de nuevo, usted conoce uno cuando ve uno ...

+3

+1 para "como con verdadero amor ... . "Definitivamente se aplica –

+0

+1, muy útil. Esto puede ser un poco quisquilloso, pero con respecto a su punto A1, mencionaría que la etiqueta 'ul' es para representar datos no ordenados, no datos no estructurados. –

Cuestiones relacionadas