dominios y alojamiento web en hostalia

Declaraciones de tipo de documento (DTD's)

18 de noviembre de 2005
Valoración del artículo:
Xml tiene una ventaja que se puede convertir en un inconveniente: cada persona/autor puede crear sus propias etiquetas.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
XML tiene una ventaja que se puede convertir en un inconveniente: cada persona/autor puede crear sus propias etiquetas.

Esto no trae problemas si trabajamos solos; pero, ¿y si trabajamos en equipo?, ¿y si queremos exportar nuestros documentos? ¿qué estándar seguiremos?

Ej:

    "A" puede escribir el nombre como sigue:
        <nombre>Juan</nombre>
    Sin embargo, "B" puede hacerlo así:
       <nombre id="Juan"/>

Las 2 versiones son igual de correctas pero son diferentes; si extrapolamos esto a muchas marcas, entonces la lectura y/o modificación de documentos por diferentes personas puede ser un caos.

Nota: Como me enseñaron en la universidad, "no es plan" que hagas una aplicación que sólo entiendas tú, de forma que, si se quiere modificar, la empresa tenga que pedirte de rodillas que lo hagas.

Para resolver estos problemas, proporcionando un pequeño estandar acerca de la sintaxis a utilizar, XML ofrece dos posibles soluciones:

  • Las DTD's.
  • Los XML Schemas.
En las DTD's podemos hacer 4 tipos de declaraciones:

  1. Declaraciones de tipo de elemento (Element Type Declarations).
  2. Declaraciones de listas de atributos (Attribute List Declarations).
  3. Declaraciones de Entidades (Entity Declarations).
  4. Declaraciones de notación (Notation Declarations).
Las trataré una a una en los siguientes apartados.

Declaraciones de tipo de elemento

Estas declaraciones establecen qué elementos pueden formar parte del documento y cuáles pueden formar parte de su interior (los elementos se anidan unos dentro de otros).

Sintaxis:

Los elementos que puede contener cada elemento (valga la redundancia) van siempre encerrados entre paréntesis y precedidos de la etiqueta <!ELEMENT.

Dentro de las etiquetas, cada elemento (atributo) podrá llevar uno de los siguientes símbolos detrás de su nombre:

SÍMBOLO SIGNIFICADO (Indica...)
,Secuencia de elementos
? 0 o 1 ocurrencias
* 0 o más ocurrencias
+ 1 o más ocurrencias
Empty que el elemento está vacío.
Estos elementos NO tienen etiqueta de cierre.
Any Cualquier contenido es válido.
Yo no recomiendo su uso.
#PCDATA que el contenido de la cadena puede ser una cadena de texto.

Ejs:

<!ELEMENT nombre (#PCDATA)>
<!ELEMENT nombre EMPTY>
<!ELEMENT cliente (nombre,apellidos,nif?,tlf*,direccion+)>


Este último ej. quiere expresar lo siguiente:

El elemento cliente debe contener a nombre y apellidos, puede contener a nif y tlf - a este incluso más de una vez- y debe contener al menos una vez la dirección del cliente (para poder enviarle el pedido a casa).

Nota: Luego podemos hacer una redefinición de los subelementos si queremos.

EJ:
<!ELEMENT cliente (nombre,apellidos,nif?,tlf*,direccion+)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellidos(ape1,ape2?)>
.....


Además de esto, tambien podemos indicar que existen varias alternativas; para ello se usa el símbolo | (relación OR). Ej:

<!ELEMENT apellidos (#PCDATA|(ape1,ape2))>>
<!ELEMENT ape1 (#PCDATA)>
<!ELEMENT ape2 (#PCDATA)>


indica q se puede elejir entre teclear los 2 apellidos juntos o por separado:

  • <apellidos> Perez López </apellidos>
  • <apellidos> <ape1> Perez </ape1> <ape2> López </ape2> </apellidos>
Declaraciones de listas de atributos

Ya hemos visto como denotar los elementos que puede tener el documento. Pero, ¿qué pasa con los atributos (si es que tienen) de todos y acada uno de los elementos?

Para definirlos se usan las declaraciones de listas de atributos, cuya sintaxis es la siguiente:

Sintaxis:

Todas las definiciones de atributos empezarán por: <!ATTLIST

Cada atributo está formado por 3 partes:

Nombre
Tipo del atributo
Valor por defecto

Las posibilidades para describir el tipo de un atributo (campo) y el valor por defecto del mismo las podeis ver en las siguientes tablas:

Tipo del atributo

VALOR SIGNIFICADO
CDATAEl atributo será una cadena de caracteres.
No todos los caracteres son válidos.
Usaremos secciones PCDATA cuando queramos incluir los carácteres no válidos.
IDEl atributo sirve para identificar al elemento dentro del documento.
Sólo puede haber un atributo de tipo ID por elemento.
IDREF/SEste atributo se empleará para referenciar a otros elementos del documento a partir de su ID.
ENTITY/S Contiene nombres de entidades. Ver siguiente apdo.
NMTOKEN/SContiene una única cadena de texto (ed, una sola palabra).
(<<enumerados>>)Aquí especificamos EL conjunto de valores q puede tomar el atributo; esto lo hacemos separandolos con |.

Nota: El valor para los atributos acabados en S (ej. IDEREFS) será una lista de valores separados por espacios en blanco.

Valores por defecto

VALOR SIGNIFICADO
#REQUIREDCon esto indicamos que es obligatorio darle un valor al atributo.
#IMPLIEDCon esto indicamos que es opcional darle un valor al atributo.
<<valor>> Podemos poner un valor (NO lista de valores) opcional directamente; entonces, si no se le otorga un nuevo valor posteriormente, asumirá el dado (ed, es el valor x por defecto).
No es obligatorio darle un valor en el doc.
#FIXED <<valor>>>Con esto obligamos a q el atributo tome necesariamente el valor especificado en <<valor>>
EJ:

<!ATTLIST cliente
    numcli ID #REQUIRED
    edad ("Menos de 18" | "entre 18 y 65" | "Más de 65") #IMPLIED
>


Al ser numcli de tipo ID indicamos q no puede haber 2 clientes con idéntico numcli.
Edad es un atributo no obligatorio q sólo puede tomar los valores de la lista enumerada.

Compartir en redes sociales

Comentarios
Fueron enviados 10 comentarios al artículo
4 comentarios no revisados
6 comentarios revisados:
Faltas ortográficas
Por: Guillem
17/4/2010
Es inadmisible que un texto de carácter académico (como los que contiene esta web) se publique sin una revisión ortográfica previa. Copio una frase de ejemplo:
"indica q se puede elejir entre teclear los 2 apellidos juntos ó por separado" debería ser
"indica que se puede elegir entre teclear los dos apellidos juntos o por separados"

Por favor, si sus articulistas son incapaces de escribir sin faltas, contraten un revisor si no quieren arruinar su credibilidad.
credibilidad
Por: juanjo
22/7/2010
El caso es que tengo dos libracos de la editorial prentice hall creo, sobre XML. Buenos y caros. Así como bien redactados.
Yo que soy de los cabezones, me he empeñado en estudiar el tema sin tener mucha idea de informática. Pero veo que el nivel exigido es demasiado para mí y necesito otro material de apoyo.

Navegando he encontrado esta introducción. Y me ha aclarado muchas dudas.
Parece mentira que una explicación tan "mundana" y "llena de fallos" me sea de mayor utilidad que otro material que se vende y supuestamente es el adecuado. Quizás por el lenguaje tan cercano.

Es fácil encontrar linguistas que no saben dar formato a un texto desde un ordenador. Así como informáticos no muy ortográficos. Normal.

Es mi opinion, saludos.
¡La gramática del artículo es inadmisible!
Por: Alexis Advance
09/12/2010
Al igual que Guillem, considero que la ortografía ?como también la redacción? que compone este artículo es tan paupérrima que pasa de ser algo que pueda llamarse «cercano», «simpático» o «amigable». Personalmente mantengo un buen nivel de escritura, por lo que leer (e intentar interpretar y comprender) un texto como el que figura arriba se me volVió una tarea pesada, fatigosa y para nada cercana o amigable, al punto de que por esta vez dejaré mi lectura hasta aquí y haré uso de un maual de otro sitio en lugar del que me brinda Desarrolloweb.

Les sugiero cordialmente que mejoren este problema. No es un tema menor (menos cuando hablamos de textos que tratan de código informático, en los cuales un solo error de escritura es grave, puesto que puede cambiar por completo el sentido de una frase) y es una debilidad que he visto en varios artículos de Desarrolloweb, aunque en ninguno de manera tan pronunciada como en el que nos ocupa.

Se despide un lector fiel y habitual de Desarrolloweb que, en esta oportunidad, debido a los temas expuestos con anterioridad, deberá buscar opciones alternativas de lectura.

Manu45
Prentice Hall
28/12/2010
El problema de los libros de Prentice Hall, es que el autor supone que ya sabes las bases de lo que estas estudiando, tanto Prentice Hall como Cengage Learning, son libros de autores muy bien preparados.

Y sobre los textos que ponen aquí, si es importante decir que no es lo mismo escribir un comentario, que un texto de consulta, esta mal redactados.
¿Qué esperáis?
Por: Javi
30/12/2010
Sin ánimo de ofender, esta persona os está ofreciendo sus conocimientos que tan costosamente le ha costado adquirir de forma totalmente gratuita y vosotros en lugar de agradecerselo se lo echáis por tierra por unas simples faltas de ortografía. Opino que podríais tener un poquito más de consideración cuando se os ofrece un servicio gratuito. Nadie es perfecto.
Faltas de ortografía
Por: juandecon
17/1/2011
Algo que nos diferencia de las máquinas es que somos capaces de razonar. No solo en este artículo hay faltas, también en otros muchos más. Pero qué hago yo cuando las encuentro. Mentalmente lo escribo bien y trato después de asimilar lo leido. Y puede decir que gracias a esta web he aprendido muchos conceptos informáticos relacionados con el diseño web.
Felicito por ello a sus creadores, al mismo tiempo que los animo a que sigan divulgando sus conocimientos Web, sobre todo sin coste alguno para los usuarios que visitan este sitio.
Mi más sincera enhorabuena

Manuales relacionados
Categorias relacionadas
El autor
Javier M Criado
Ingeniero Téc. en Informática
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...