Definir la estructura Persona en XML

10/Jun/2007 XML , , , , , , , , 7 Comentarios

Lo que vamos a hacer es definir la estructura persona mediante el lenguaje XML. Para ello tendremos que hacer dos cosas: la primera será definir el DTD (Document Type Definition) donde se declara la estructura de la persona. En segundo lugar crearemos un fichero XML donde tendremos los datos de una persona en particular, los cuales deben de seguir la estructura definida en el anterior DTD.

Definir el DTD
El DTD es un documento que nos ayuda a definir las estructuras que queremos que sean utilizadas en nuestro documento XML, de tal manera que se establece una relación de validación entre el DTD y el documento XML.

Nuestra estructura persona se compone de una serie de elementos. Los elementos serían:

  • Nombre
  • Apellidos (dos apellidos)
  • Dirección
  • Teléfono o Móvil
  • Fotografía (opcional)

Para definir un elemento utilizaremos la etiqueta ELEMENT, la cual tiene la siguiente estructura:

  1. <!ELEMENT nombre_atributo (tipo)>

En el caso que estemos definiendo elementos que van a contener texto, estos serán del tipo PCDATA. El código será el siguiente:

  1. <!ELEMENT nombre (#PCDATA)>
  2. <!ELEMENT apellido (#PCDATA)>
  3. <!ELEMENT direccion (#PCDATA)>
  4. <!ELEMENT telefono (#PCDATA)>
  5. <!ELEMENT movil (#PCDATA)>
  6. <!ELEMENT foto (#PCDATA)>

Hemos definido los elementos por separado. Ahora tendremos que definir la estructura persona, la cual contiene estos elementos y les aplica una serie de restricciones. Las restricciones son que los apellidos pueden ser más de uno, que tendremos teléfono o móvil y que la fotografía será opcional.

Veamos como contemplar cada una de estas restricciones por separado. Para el caso de que sean 1 o varios elementos, se utiliza el símbolo + detrás del elemento (apellidos+). Para identificar que es un elemento u otro se utiliza el símbolo |, de esta manera la estructura será (telefono | movil). Por último veremos que la opcionalidad se identifica con el símbolo de cierre de interrogación (foto?). Con todo esto, la definición de la estructura persona será la siguiente:

  1. <!ELEMENT persona (nombre,apellido+,direccion,(telefono|movil),foto?)>

En el DTD solamente tendremos elementos, y no incluiremos ni atributos, ni entidades. Todos los elementos, quitando el elemento persona, serán, como hemos visto antes, del tipo #PCDATA.

El archivo lo llamaremos persona.dtd

Crear el documento XML
Una vez definido el DTD pasamos a crear el documento XML. Este le llamaremos persona.xml. En dicho documento lo primero que hay que identificar es que es un documentoXML Para ello tenemos la siguiente cabecera:

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

En esta cabecera tenemos 3 atributos:

  • version, que indica la versión XMLL que utilizaremos
  • encoding, que será la codificación a utilizar en el documento.
  • standalone, es para indicar si el documento tiene una validación externa (valor "yes") o si no tiene una validación externa (valor "no").

Lo siguiente será indicar cual es el DTD contra el que vamos a validar el documento. Esto lo hacemos con el DOCTYPE mediante la siguiente línea:

  1. <!DOCTYPE persona SYSTEM "persona.dtd">

Deberemos de tener cuidado de no dejar espacios en blanco entre las interrogaciones y el texto o entre la exclamación inicial y el texto, ya que es este un error muy común de programación. Nos ahorrará muchos quebraderos de cabeza

Después de esto deberemos de insertar los elementos XML acordes a las reglas marcadas en nuestro DTD.

7 comentarios en “Definir la estructura Persona en XML”

Víctor Cuervo

Ernesto

DOCTYPE persona (View Source for full doctype…)

Este es el Element se supene debera aparecer
ELEMENT persona (nombre,apellido+,direccion,(telefono|movil),foto?)
con sus respectivos valores claro

jaja lo siento no me habia fijado q no hace caso cuando estan los picoparentesis

Víctor Cuervo

Ernesto

“”

Víctor Cuervo

Ernesto

Este es el mensaje nose x q lo borro en el post anterior

Víctor Cuervo

Ernesto

Hola q tal;
Primero q nada felicitarte por el aporte, luego tengo una duda ojala me pudieran ayudar, descargue los archivos, y cuando ejecuto perona1 o persona 2 me aparece un mensaje raro y me hace pensar q algo hice mal, tmb siento q no hace lo q se supone deberia de hacer, el mensaje cuando corro el persona.xml es este:

luego de esto aparece la estructura del xml, pero no el enunciado Element como lo conformamos en el persona.dtd

Cabe mencionar q los archivos estan en el mismo directorio.

Gracias x su ayuda.

Víctor Cuervo

luigui

Hola me gustaria ver funcionando este ejemplo en conjunto con el html, ademas de ver el codigo para relacionar los archivos ya quer el link Visualizar el ejemplo no me permite verlo

Víctor Cuervo

lineadecodigo

Hola David,

En primer lugar gracias por el comentario. Con respecto al DOCTYPE, la verdad es que había un error, ya que quise poner persona, en vez de person (ya está corregido).

Si bien es verdad que daría igual, ya que este es un identificado del tipo de documento, podríamos ponerle el identificador que más rabia nos de. Si bien, se suele poner uno que se asocie al DTD especificado.

Víctor Cuervo

David

Un ejemplo sencillo y bien explicado. Lo que me queda sin entender es a qué se refiere la palabra “person” en el DOCTYPE, en el ejemplo que se descarga pone “persona” pero para qué esta cadena de caracteres.

Un saludo.

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*