SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
NÚMERO 46 HELP400 Suplemento Técnico 1
Suplemento técnico del número 126 de NEWS/400
46Septiembre2002
VoyaaprenderXML¿meacompañas?
Si como profesional tenías pensado profundizar en alguna nueva tecnología,
ésta debe ser, sin más demora, XML. Aunque en estos momentos no tenga muy
claro cuál es el camino a seguir, si me acompañas, lo recorreremos juntos.
Por Carlos Bell
A
parte de lo que había ido leyendo por Internet, la primera vez que pensé
seriamente que el aprender XML podía ser muy interesante desde el
punto de vista de cualquier profesional de las Tecnologías de la Informa-
ción fue cuando leí el artículo “XML cruza fronteras” de Sharon L. Hoffman,
publicado en el número 107 de NEWS/400. Convencido de ello, me hice el firme
propósito de destinar algo de tiempo a indagar en los fundamentos de esa nue-
va panacea que prometía ser el XML (eXtensible Markup Language). Pero ya se
sabe, cuando uno es algo perezoso y falto de voluntad, cualquier excusa es bue-
na para posponer un buen propósito.
Sin duda, para hacerme sentir culpable, en NEWS/400 volvieron a la carga,
esta vez con un artículo divulgativo (francamente bueno) en donde Eduardo
Ross (vicepresidente y director de investigación y desarrollo en ASNA desde
1987) nos exponía, bajo el sujestivo título de “XML: lenguaje para negocios
electrónicos” (publicado en el número 111) los principios y posibilidades del
XML de una forma clara y sencilla.
Esta vez sí. Realmente estaba decidido: aprenderé XML sea como sea, me
dije. Empecé a visitar páginas web específicas y a seleccionar y copiar parte de
su contenido. Megas y megas de información acumulándose en carpetas y
subcarpetas en el disco duro de mi PC esperando, vanamente, que “alguien” les
diera una segunda oportunidad...
Y al final, así ha sido. NEWS/400 tenía planificado para este número que los
temas de portada se centraran en la utilización de XML en nuestra plataforma.
¿Qué mejor ocasión para comprometerme públicamente a destinar algo de mi
tiempo personal para aprender XML como si fuera un juego? Al fin y al cabo,
para dar los primeros pasos, con un simple editor de textos (como el Notepad de
Microsoft), una versión actualizada de su navegador y los cientos de artículos
que podemos encontrar en Internet, es suficiente.
Si como profesional te habías planteado profundizar “un día de esos” en algu-
na nueva tecnología, ésta debe ser, sin lugar a dudas, XML. Son tantas sus
posibilidades y tantos los esfuerzos que realiza la industria para que el XML se
generalice que hasta NOVATICA, la más decana y académica de las revistas
informáticas españolas, le dedicará su próxima monografía. Y este mes de Sep-
tiembre, en que de forma alegórica iniciamos un nuevo curso, es el mejor mo-
mento para hacerlo. ¿Me acompañas?
q
q
q
SUMARIO
1 Voy a aprender XML
¿me acompañas?
4 Estructura de un
documentoXML
8 DTD:DocumentType
Definitions
2 HELP400 Suplemento Técnico
Suplemento Técnico de NEWS/400
Director General
Alberto C. Blanch Llangostera
a.blanch@help400.com
Director
Antonio Montía
a.montia@help400.com
Coordinación
Carlos Bell
Jaime Gustavo Estany
Maquetación y Producción
Complay, S.L.
complay@retemail.es
Impresión
Policrom, S.A.
EDITA
Publicaciones HELP400, S.L.
APTDO. DE CORREOS 8003 - 08080 Barcelona
Gran Vía C. Catalanes, 715, Entlo. 3ª
08013 - Barcelona
Tel. :93.231.00.49 Fax :93.231.03.09
E-mail: suplemento@help400.com
Web:http://www.help400.com
Deposito legal: B-2757-90 I.S.S.N. 1133-8067
Suscripción: Anual (10 números al año). España: 96 • .
Se distribuye conjuntamente con el ejemplar de NEWS/
400, sin cargo para sus suscriptores.
© Publicaciones HELP400, S.L. Se prohibe la repro-
ducción total o parcial del contenido sin autorización previa
y por escrito de la empresa editora, titular del Copyright.
Todos los derechos reservados en cualquier idioma.
De las ideas expuestas en los artículos firmados son respon-
sables sus autores. Corresponde al lector el asegurar que
las noticias, técnicas y procedimientos descritos son ade-
cuados para su instalación. Publicaciones HELP400 S.L.
no asume ninguna garantía ni implícita ni explicitamente.
IBM y AS/400 son marcas registradas por International Business Machines.
El movimiento se demuestra andando
Conste que os he tendido una trampa. En el momento de redactar estas líneas,
aparte del firme propósito de seguir adelante, no tengo muy claro cuál es el
camino a seguir ni los pasos que vamos a dar. Lo que si está claro es que la
mejor forma de aprender a programar (una vez conocidos los fundamentos de
un determinado lenguaje), es programando. Y aunque XML no sea un lenguaje
de programación propiamente dicho sino un meta-lenguaje de marcado que per-
mite describir secuencias de datos, sólo practicándolo lograremos familiarizar-
nos con él y con las tecnologías a él asociadas.
Dicho esto, recomendarte un poco de constancia y de paciencia. El “curso”
acaba de comenzar y durante varios meses (XML da para eso y mucho más), a
través de HELP400 y de la información disponible en Internet, vamos a ser
compañeros, y de paso, vamos a aprender un buen número de siglas y de nuevos
conceptos. Eso sí: también deberías estar algo familiarizado con el desarrollo de
páginas web (HTML y CSS) y algo de JavaScript y/o VisualScript porque me
propongo, partiendo de asimilar las principales caracteristicas y posibilidades
del XML, llegar hasta el desarrollo de una aplicación gráfica (para el Internet
Explorer) que nos permita jugar con diferentes formatos XML aceptados como
estándares, como puedan ser SVG (Scalable Vector Graphics) que permite crear
páginas web con grafismos y textos vectorizados o RDF (Resource Description
Framework) un modelo de datos en XML que permite describir recursos y su
relación entre ellos
¿Por qué XML?
Desarrollado a partir de 1996 como un subconjunto de SGML
(Standard Generalized Markup Language), en 1998 XML fue
adoptado como estándar por el W3C (World Wide Web Consor-
tium). Desde entonces se ha convertido en un estándar interna-
cionalmente reconocido que no pertenece a ninguna compañía y
cuya libre utilización y versatilidad (figura 1) facilitará el uso
efectivo de Internet en diferentes alfabetos, por personas con
minusvalías físicas y en diferente hardware (teléfonos celula-
res, PDAs, terminales Braille, etc.).
Al ser fácilmente procesable tanto por humanos como por soft-
ware y separar radicalmente la información o contenido de su
presentación o formato, un documento XML puede tener mu-
chas formas de presentación (HTML, PDF, SVG, VML...) facili-
tando a los diseñadores de páginas web hacer cambios de estilo
de manera sistemática. De hecho XML es, además, el formato
ideal para transacciones B2B, permitiendo poderosas técnicas
de extracción y de data-mining.
Los programadores también consideran que XML es un for-
mato adecuado para intercambiar estructuras complejas como
parámetros. Un ejemplo sería el Lenguaje de marcas de llama-
das a programas (PCML) que utiliza IBM en su “Toolbox para
Java” para hacer llamadas a programas. También pueden en-
contrarse ejemplos de XML siendo utilizado para implementar
interfaces con objetos remotos para evitar la actividad general
asociada a RMI (Remote Method Invocation) y a CORBA
(Common Object Request Broker Architecture). XML se está con-
virtiendo en una herramienta imprescindible en la caja de he-
rramientas de cualquier programador.
Como se trata de una herramienta excelente para el inter-
cambio de datos entre distintas aplicaciones, sistemas y empre-
sas, XML está sustituyendo rápidamente a las tradicionales
NÚMERO 46 HELP400 Suplemento Técnico 3
corrientes de datos EDI (como X.12) como sistema de intercambio de documen-
tos entre empresas. Muchas industrias, empresas de servicios (compañías de
seguros y bancos) y del ámbito de la distribución están definiendo diferentes
DTD (Definición de Tipo de Documento) para los documentos clave que necesi-
tan transmitirse entre sus miembros.
El uso más ambicioso y prometedor de XML está en los servicios web (Web
Services). Esta tecnología emergente se basa en localizar servicios, tanto si es-
tán en Internet como en una intranet, y en ejecutarlos se encuentren donde se
encuentren y sea cual sea su plataforma. XML es un puntal fundamental para
la comunicación de componentes, claves del modelo de servicios web. Es de des-
tacar que Microsoft está adoptando en su iniciativa .NET los servicios web y
XML, lo que sienta las bases para la intercomunicación entre los sistemas .NET
y J2EE.
Esta increíble gama de posibilidades es la que confiere a XML su potencia. El
sencillo concepto en que se basa (datos que se describen a sí mismos) está te-
niendo un profundo impacto. Ha llegado la hora de averiguar en qué puede
ayudarnos.
Créditos y reconocimientos
Como para elaborar estos “apuntes” recurriré a textos, artículos y ejemplos re-
cuperados de Internet (sí, esos que dormían en el disco duro de mi PC o los
nuevos que se van publicando), en modo alguno quisiera atribuirme su autoría.
Y puesto que de forma consciente pretendo dar una hogeneidad al conjunto, en
muchos casos me veré obligado a entremezclar contenidos de distinta proceden-
cia (intentando respetar al máximo el original) de la que, en la medida de lo
posible, indicaré sus referencias.
Para establecer un primer contacto, he utilizado tres artículos: el primero,
“Introducción a XML en castellano - Versión 2.0”, original de Alfredo Reino
(www.ibium.com/alf/xml/index.asp) preparado para el “IV Simpósium Interna-
cional de Telemática”, de la Universidad de Colima (México) en Mayo de 2000
(texto parcialmente utilizado en este número).
El segundo, “Introducción al XML - Versión 2 - 18/7/2001” original de Jai-
me E. Villate (http://www.laespiral.org/xml/) de la Universidad de Oporto, pre-
parado para un Seminario sobre Programa-
ción en entorno GNU/Linux, celebrado en la
universidad Rey Juan Carlos (Madrid, Es-
paña).
El tercero, del que me hubiera gustado in-
cluir varios fragmentos, es el artículo de Ra-
món Montero, titulado “XML, el lenguaje
universal”, que puedes hallar en sus pági-
nas web (http://www.ramon.org/xml/
articulos/intro_xml-html.htm).
Te recomiendo la lectura de los tres, casi
casi de forma inmediata.
Como podrás compobar, los fundamentos
de XML son muy sencillos. En las siguientes
páginas veremos cómo crear documentos
XML bien-formados, y que sean válidos, es
decir, que estén conformes a una determina-
da DTD (Document Type Definition).
Próximamente veremos la creación y uso
de hojas de estilo (XSL) para la presentación
de los datos, así como diferentes aplicacio-
nes actuales de XML. q
FIGURA 1
Versatilidad del contenido XML
4 HELP400 Suplemento Técnico
EstructuradeundocumentoXML
XML (eXtensible Markup Language) no es, como su nombre podría sugerirnos,
un lenguaje de marcado. XML es un meta-lenguaje que nos permite definir
datos y lenguajes de marcado, adecuados a usos determinados.
Por Alfredo Reino
A
unque a primera vista un documento XML puede parecer similar a HTML,
hay una diferencia sustancial. Un documento XML contiene, exclusiva-
mente, datos que se autodefinen. Un documento HTML contiene datos
mal definidos, mezclados con elementos de formato. En XML se separa el conte-
nido de la presentación de forma total.
A un nivel muy básico, los documentos XML son ficheros de texto plano en
los que sólo existen cinco caracteres especiales o reservados (los símbolos me-
nor que “ < ”, mayor que “ > ”, las comillas dobles “ " ”, el apóstrofo [o comilla
simple] “ ' ” y el caracter “ &”) que nos permiten crear las marcas (o etiquetas)
que dan estructura al documento XML. Cada marca tiene un nombre que, a su
vez, puede contener uno o más atributos.
Como veremos, cuando en el texto de los datos es necesario utilizar uno de los
5 caracteres especiales, para evitar que sea interpretado como un marcador se
sustituye por una “entidad” (&lt;, &gt;, &quot;,
&apos;, &amp;).
Una forma de entender rápidamente la es-
tructura de un documento XML, es analizando
el pequeño ejemplo incluido en la figura 1. Este
mismo documento, para comprender mejor su
estructura, podría ser representado gráficamen-
te como en la figura 2.
Documentos XML bien-formados
Existen un número de diferencias entre la sin-
taxis de HTML y XML. Es útil, para aquellos
que saben HTML y quieren usar XML, cono-
cerlas perfectamente, para poder crear docu-
mentos XML bien-formados.
Estructura jerárquica de elementos. Los do-
cumentos XML deben seguir una estructura es-
trictamente jerárquica con lo que respecta a las
etiquetas que delimitan sus elementos. Una eti-
queta debe estar correctamente incluida en
otra. Además, los elementos con contenido, de-
ben estar correctamente cerrados. En el siguien-
te ejemplo, la primera línea <LI> sería incorrec-
ta en XML, no así la segunda:
<LI>HTML <B>permite <I>esto</B></I>.
<LI>En XML la <B>estructura <I>es</I> jerár-
quica</B>.</LI>
Etiquetas vacías. HTML permiten elementos
sin contenido. Como ya veremos, XML también,
FIGURA 2
Representación gráfica del ejemplo anterior
nombre: Alfredo Reino
email: alf@ibiun.com
nombre: Bill Clinton
emial: president@whitehouse.gov
parrafo: ¿Hola qué tal?...
...
remite
destinatario
asunto: Hola Bill
texto
mensaje
FIGURA 1
Documento XML: un pequeño ejemplo
<?xml version=»1.0"?>
<!DOCTYPE MENSAJE SYSTEM "mensaje.dtd">
<mensaje>
<remite>
<nombre>Alfredo Reino</nombre>
<email>alf@myemail.com</email>
</remite>
<destinatario>
<nombre>Bill Clinton</nombre>
<email>president@whitehouse.gov</email>
</destinatario>
<asunto>Hola Bill</asunto>
<texto>
<parrafo>¿Hola qué tal? Hace <enfasis>mucho</enfasis> que
no escribes. A ver si llamas y quedamos para tomar algo.
</parrafo>
</texto>
</mensaje>
NÚMERO 46 HELP400 Suplemento Técnico 5
pero la etiqueta debe ser <elemento-sin-contenido/> En el siguiente ejemplo, la
primera línea sería incorrecta en XML, no así la segunda:
<LI>Esto es HTML<BR>en el que casi todo está permitido</LI>
<LI>El XML, es<BR/> más restrictivos.</LI>
Un solo elemento raiz. Los documentos XML sólo permiten un elemento raiz,
del que todos los demás son parte. Es decir, la jerarquía de elementos de un
documento XML bien-formado sólo puede tener un elemento inicial.
Valores de atributos. Los valores de atributos en XML, al contrario de HTML,
siempre deben estar encerrados entre comillas simples o dobles. En el siguiente
ejemplo, la primera línea sería incorrecta en XML:
<A HREF=http://www.disney.com/>
<A HREF="http://www.developer.com/">
Tipo de letra, espacios en blanco. El XML es sensible al tipo de letra utiliza-
do, es decir, trata las mayúsculas y minúsculas como caracteres diferentes. Si
un elemento de XML está definido como “ELEMENTO”, no podemos usar “ele-
mento”, ni “Elemento” para referirnos a él.
Existe un conjunto de caracteres denominados “espacios en blanco” que los
procesadores XML tratan de forma diferente en el marcado XML. Estos carac-
teres son los “espacios” (Unicode/ASCII 32), tabuladores (Unicode/ASCII 9),
retornos de carro (Unicode/ASCII 13) y los saltos de línea (Unicode/ASCII 10).
La especificación XML 1.0 permite su utilización para hacer más legible el
código, y en general son ignorados por los procesadores XML. En otros casos, sin
embargo, resultan muy significativos, por ejemplo, para separar las palabras
en un texto, o para separar lineas de párrafos diferentes.
Nombrando cosas. Al utilizar XML, es necesario asignar nombres a las es-
tructuras, tipos de elementos, entidades, elementos particulares, etc. En XML
los nombres tienen algunas características en común.
Según la especificación XML 1.0: “Un nombre [empieza] con una letra o uno o
más signos de puntuación, y [continúa] con letras, dígitos, guiones, rayas, dos
puntos o puntos, denominados de forma global como caracteres de nombre. Los
nombres que empiezan con la cadena "xml", se reservan para la estandarización
de ésta o de futuras versiones de esta especificación”
Resumiendo, no se pueden crear nombres que empiecen con la cadena “xml”,
“XML” o cualquier otra variante. Las letras y rayas se pueden usar en cual-
quier parte del nombre. Se pueden incluir dígitos, guiones y caracteres de puntua-
ción, pero no se puede empezar por ninguno de ellos. El resto de caracteres,
como algunos símbolos, y espacios en blanco, no se pueden usar.
Marcado y datos. Las construcciones como etiquetas, referencias de entidad y
declaraciones se denominan “marcas”. Éstas son las partes del documento que
el procesador XML espera entender. El resto del documento que se encuentra
entre las marcas, contiene los datos entendibles por las personas.
Es sencillo reconocer las marcas en un documento XML. Son aquellas porcio-
nes que empiezan con “<” y acaban con “>”, o bien, en el caso de las referencias
de entidad, empiezan por “&”y acaban con “ ; ”.
El prólogo
Aunque no es obligatorio, los documentos XML pueden empezar con unas línea
que describen la versión de XML, el tipo de documento, y otras cosas.
6 HELP400 Suplemento Técnico
La primera, o “declaración XML”, define la versión de XML utilizada. Hasta
ahora sólo hay una, la “1.0”. Además, en la “declaración XML” especificamos la
codificación del documento, que puede ser, por ejemplo, US-ASCII (7 bits) o UTF-
8 (código Unicode del que el ASCII es un subconjunto), UCS-2, EUC-JP, Shift_JIS,
Big5, ISO-8859-1 hasta ISO-8859-7. En general, y para uso con lenguajes euro-
peos (incluyendo el juego de caracteres especiales del castellano, utilizaremos
UTF-7 o ISO-8859-1)
Además, se puede incluir una declaración de documento autónomo (stand-
alone), que controla qué componentes de la DTD (Definición de Tipo de Docu-
mento) son necesarios para completar el procesado del documento.
<?xml version="1.0" encoding="UTF-7" standalone="yes"?>
La segunda, o “declaración de tipo de documento”, define qué tipo de docu-
mento estamos creando para ser procesado correctamente. Es decir, definimos
qué declaración de Tipo de Documento DTD valida y define los datos que con-
tiene nuestro documento XML.
En ella se define el tipo de documento, y dónde encontrar la información
sobre su “Definición de Tipo de Documento”, mediante un identificador público
(PUBLIC) que hace referencia a dicha DTD, o mediante un Identificador Uni-
versal de Recursos (URI) precedido por la palabra SYSTEM. Ejemplos:
<!DOCTYPE MENSAJE SYSTEM "mensaje.dtd">
<!DOCTYPE HTML PUBLIC "-/ /W3C/ /DTD HTML 3.2 Final/ /EN">
<!DOCTYPE LABEL SYSTEM "http://www.empresa.com/dtds/label.dtd">
Elementos
Los elementos XML pueden tener contenido (más elementos, caracteres, o am-
bos a la vez), o bien ser elementos vacíos. Un elemento con contenido es, por
ejemplo:
<nombre>Fulano Mengánez</nombre>
<aviso tipo="emergencia" gravedad="mortal">Que no cunda el pánico</aviso>
Siempre empieza con una <etiqueta> que puede contener atributos o no, y
termina con una </etiqueta> que debe tener el mismo nombre. Al contrario que
HTML, en XML siempre se debe cerrar un elemento.
Hay que tener en cuenta que el símbolo “ < ” siempre se interpreta como
inicio de una etiqueta XML. Si no es el caso, el documento no estará bien-for-
mado. Para ciertos símbolos se utilizan las entidades predefinidas, que se expli-
can más adelante.
Un elemento vacío, es, como su nombre indica, el que no tiene contenido; por
ejemplo:
<identificador DNI="23123244"/> o <linea-horizontal/>
Al no tener una etiqueta de “cierre” que delimite un contenido, se utiliza la
forma <etiqueta/>, que puede contener atributos o no. La sintaxis de HTML
permite etiquetas vacías tipo <hr> , <br> o <img src="...">. En HTML
reformulado para que sea un documento XML bien-formado, se debería utilizar
<hr/>. <br/> o <img sec="..."/>
Atributos
Como ya se ha mencionado, los elementos pueden tener atributos, una manera
de incorporar características o propiedades a los elementos de un documento.
NÚMERO 46 HELP400 Suplemento Técnico 7
Por ejemplo, un elemento “chiste” puede tener un atributo “tipo” y un atributo
“calidad”, con valores como “vascos” y “bueno”, respectivamente.
<chiste tipo="vascos" calidad="bueno">
Esto es un dia que Patxi y Josu van paseando…</chiste>
En el DTD se especifican los atributos que puede tener cada tipo de elemen-
to, así como sus posibles valores y tipos. Al igual que en otras cadenas literales
de XML, pueden estar marcados entre comillas simples o dobles. Cuando uno
delimita el valor del atributo, el otro se puede utilizar dentro.
<verdura clase="zanahoria" longitud=’15" y media’>
<cita texto="’Hola buenos dias’, dijo él">
A veces, un elemento con contenido, puede modelarse como un elemento va-
cío con atributos. Un concepto se puede representar de muy diversas formas,
pero una vez elegida una, es aconsejable fijarla en el DTD, y usar siempre la
misma consistentemente dentro de un documento XML.
<gato><nombre>Micifú</nombre><raza>Persa</raza></gato>
<gato raza="Persa">Micifú</gato>
<gato raza="Persa" nombre="Micifú"/>
Entidades
En XML 1.0 existen cinco entidades predefinidas (&lt;, &gt;, &quot;, &apos;,
&amp;). para representar los caracteres especiales menor que “ < ”, mayor que
“ > ”, las comillas dobles “ " ”, el apóstrofo y el caracter “ & ” para que éstos no
sean interpretados por el procesador XML como un marcado.
SeccionesCDATA
Existe otra construcción en XML que permite especificar datos, utilizando cual-
quier carácter (especial o no) sin que se interprete como marcado XML. Esta
construcción, llamada CDATA (Character Data) a ve-
ces es necesaria para que los autores de documentos
XML, puedan leerlo facilmente sin tener que descifrar
los códigos de entidades.
La figura 3 muestra un ejemplo, primero usando
entidades predefinidas, y luego con un bloque CDATA.
Como vemos, dentro de una sección CDATA podemos
poner cualquier cosa, que no será interpretada como
algo que no es. Existe una excepción, la cadena “]]>”
con la que finaliza el bloque CDATA y que no puede
utilizarse dentro de una sección CDATA.
Comentarios
A veces es conveniente insertar comentarios en el do-
cumento XML, que sean ignorados por el procesado de
la información y las reproducciones del documento. Los
comentarios tienen el mismo formato que los comen-
tarios de HTML. Es decir, comienzan por la cadena
“<!--” y terminan con “-->”.
Como vemos en la figura 4, se pueden introducir
comentarios en cualquier lugar de la instancia o del
prólogo, pero nunca dentro de las declaraciones, eti-
quetas, u otros comentarios. q
FIGURA 3
Secciones CDATA
<ejemplo>
&lt;HTML>
&lt;HEAD>&lt;TITLE>Rock &amp; Roll&lt;/TITLE>&lt;/HEAD>
</ejemplo>
<ejemplo>
<![CDATA[
<HTML>
<HEAD><TITLE>Rock & Roll</TITLE></HEAD>
]]>
</ejemplo>
FIGURA 4
Comentarios
<?xml version="1.0"?>
<!— Aquí va el tipo de documento —>
<!DOCTYPE EJEMPLO [
<!— Esto es un comentario —>
<!ELEMENTO EJEMPLO (#PCDATA)>
<!— ¡Eso es todo por ahora! —>
]>
<EJEMPLO>texto texto texto bla bla bla
<!— Otro comentario —>
</EJEMPLO>
<!— Ya acabamos —>
8 HELP400 Suplemento Técnico
DOCUMENTTYPEDEFINITIONS(DTDs)
Las posibles marcas o etiquetas que pueden aparecer en un documento XML y
los atributos que éstas pueden tener, son definidas en un fichero llamado
“Definición del Tipo de Documento” (en inglés “Document Type Definition” ) o
simplemente DTD. Cada documento XML debe indicar al comienzo el DTD
usado por medio de una marca <!DOCTYPE>
Por Alfredo Reino
C
rear una definición del tipo de documento (DTD) es como crear nuestro
propio lenguaje de marcado, para una aplicación específica. Por ejem-
plo, podríamos crear un DTD que defina una tarjeta de visita. A partir
de ese DTD, tendríamos una serie de elementos XML que nos permitirían defi-
nir tarjetas de visita.
La DTD define los tipos de elementos, atributos y entidades permitidas, y
puede expresar algunas limitaciones para combinarlos. Los documentos XML
que se ajustan a su DTD, se denominan “válidos”. El concepto de “validez” no
tiene nada que ver con el de estar “bien-formado”. Un documento XML “bien-
fomado” (o “conformado” según la terminología inglesa) simplemente respeta la
estructura y sintaxis definidas por la especificación de XML. Un documento
“bien-formado” puede, además, ser “válido” si cumple las reglas de una determi-
nada DTD. También existen documentos XML sin una DTD asociada, en ese
caso aunque no son “válidos”, tampoco son “inválidos”… simplemente están
“bien-formados” (… o no).
Dónde reside una DTD
La DTD puede residir en un fichero externo que quizá esté compartido por va-
rios (puede que miles) de documentos. O bien, como hemos visto en el Prólogo de
un documento XML, puede estar contenida en el
propio documento XML, como parte de su declara-
ción de tipo de documento (figura 1).
En el ejemplo de la figura, a declaración del tipo
de documento comienza en la primera línea y ter-
mina con “]>”. Las declaraciones DTD son las lí-
neas que empiezan con <!ELEMENT y se denominan
declaraciones de tipo elemento. También se pue-
den declarar atributos, entidades y anotaciones
para una DTD.
En el ejemplo anterior, todas las declaraciones
DTD que definen “etiqueta” residen dentro del pro-
pio documento. Sin embargo, la DTD se puede de-
finir parcial o completamente en otro lugar (como
en el ejemplo de la figura 2).
Declaraciones tipo Elemento
Los elementos son la base de las marcas XML, y
deben ajustarse a un tipo de documento declarado
en una DTD para que el documento XML sea con-
siderado válido.
Las declaraciones de tipo de elemento deben
empezar con <!ELEMENT seguidas por el identifica-
dor genérico del elemento que se declara. A
FIGURA 1
DTDcomopartedeldocumentoXML
<!DOCTYPE etiqueta[
<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT codigo (#PCDATA)>
]>
<etiqueta>
<nombre>Fulano Mengánez</nombre>
<calle>c/ Mayor, 27</calle>
<ciudad>Valderredible</ciudad>
<pais>España</pais>
<codigo>39343</codigo>
</etiqueta>
<?xml version=»1.0"?>
<!DOCTYPE coche SYSTEM «http://www.sitio.com/dtd/coche.dtd»>
<coche>
<modelo>...</modelo>
...
</coche>
FIGURA 2
DTD externa
NÚMERO 46 HELP400 Suplemento Técnico 9
continuación tienen una especificación de contenido. En los ejemplos incluidos
en la figura 3 el elemento <receta> puede contener dentro elementos <titulo>,
<ingredientes> y <procedimiento>, que, a su vez, estarán definidos también en
la DTD y podrán contener más elementos. Siguiendo la definición de este ele-
mento, el primer ejemplo XML de la figura 3 sería válido, pero no así en el
segundo.
La especificación de contenido puede ser de cuatro tipos:
EMPTY - Puede no tener contenido. Suele usarse para los atributos.
ANY - Puede tener cualquier contenido. No se suele utilizar, ya que es conve-
niente estructurar adecuadamente nuestros documentos XML.
Mixed - Puede tener caracteres de tipo datos o una mezcla de caracteres y
sub-elementos especificados en la especificación de contenido mixto. Según los
ejemplos de la figura 4, el elemento definido como <enfasis> puede contener
datos de carácter (#PCDATA). Y el definido como <parrafo> puede contener tan-
to datos de carácter (#PCDATA) como sub-elementos de tipo <enfasis>.
Element - Sólo puede contener sub-elementos especificados en la especifica-
ción de contenido.
Para declarar que un tipo de elemento tenga contenido de elementos se especi-
fica un modelo de contenido en lugar de una especificación de contenido mixto o
una de las claves ya descritas.
Modelos de contenido
Un modelo de contenido es un patrón que establece los sub-elementos acepta-
dos, y el orden en que se aceptan. Un modelo sencillo puede tener un solo tipo de
sub-elemento; uno complejo, puede llegar a reque-
rir indicadores de frecuencia. Analicemos algunos
ejemplos:
<!ELEMENT aviso (parrafo)> nos indica que <aviso>
sólo puede contener un solo <parrafo>.
<!ELEMENT aviso (titulo, parrafo)> En este caso
la coma denota una secuencia. Es decir, el elemen-
to <aviso> debe contener un <titulo> seguido de un
<parrafo>.
<!ELEMENT aviso (parrafo | grafico)> La barra
vertical “|” indica una opción. Es decir, <aviso>
puede contener o bien un <parrafo> o bien un
<grafico>. El número de opciones no está limitado
a dos, y se pueden agrupar usando paréntesis.
<!ELEMENT aviso (titulo, (parrafo | grafico))>
En ese caso, <aviso> debe contener un <titulo> se-
guido de un <parrafo> o de un <grafico>.
Cada partícula de contenido puede llevar un indi-
cador de frecuencia (figura 5), que siguen directa-
mente a un identificador general, una secuencia o una
opción, y no pueden ir precedidos por espacios en blan-
co. Para entenderlo, comentemos el último ejemplo
incuido en la figura 4. En este caso, <aviso> puede
tener <titulo>, o no (pero sólo uno), y puede tener cero
o más conjuntos <parrafo><grafico>, <parrafo>
<parrafo><grafico>, etc.
FIGURA 3
Declaración de tipo de elemento
<!ELEMENT receta (titulo, ingredientes, procedimiento)>
--- Ejemplo XML correcto ---
<receta>
<titulo>...</titulo>
<ingredientes>...</ingredientes>
<procedimiento>...</procedimiento>
</receta>
--- Ejemplo XML incorrecto ---
<receta>
<parrafo>Esto es un párrafo</parrafo>
<titulo>...</titulo>
<ingredientes>...</ingredientes>
<procedimiento>...</procedimiento>
</receta>
FIGURA 4
Ejemplos de especificación de contenidos
<!ELEMENT salto-de-pagina EMPTY>
<!ELEMENT batiburrillo ANY>
<!ELEMENT enfasis (#PCDATA)>
<!ELEMENT parrafo (#PCDATA|enfasis)*>
<!ELEMENT mensaje (remite, destinatario, texto)>
<!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>
FIGURA 5
Indicadores de frecuencia
? Opcional (0 o 1 vez)
* Opcional y repetible (0 o más veces)
+ Necesario y repetible (1 o más veces)
10 HELP400 Suplemento Técnico
Declaraciones de Lista de Atributos
Los atributos permiten añadir información adicional a los elementos de un do-
cumento. La principal diferencia entre los elementos y los atributos, es que los
atributos no pueden contener sub-atributos. Se usan para añadir información
corta, sencilla y desestructurada.
Otra diferencia entre los atributos y los elementos, es que cada uno de los
atributos sólo se puede especificar una vez, y en cualquier orden.
La figura 6 muestra un ejemplo XML y la lista de los elementos <mensaje>
y <texto> de dicho ejemplo. Las declaraciones de los atributos empiezan con
<!ATTLIST seguido del identificador del elemento al que se aplica el atributo. Le
siguen el nombre del atributo, su tipo y su valor por defecto. En el ejemplo, el
atributo “prioridad” puede estar en el elemento <mensaje> y puede tener el
valor “normal” o “urgente”, siendo “normal” el valor por defecto si no especifica-
mos el atributo.
El atributo “idioma”, pertenece al elemento texto, y puede contener datos de
carácter (CDATA). Es más, #REQUIRED significa que no tiene valor por defecto, ya
que es obligatorio especificar este atributo.
A menudo interesa que se pueda omitir un atributo, sin que se adopte
automáticamente un valor por defecto. Para esto se usa la condición #IMPLIED.
Por ejemplo, en una supuesta DTD que defina la etiqueta <IMG> de HTML:
<!ATTLIST IMG URL CDATA #REQUIRED ALT CDATE #IMPLIED>
es decir, el atributo “URL” es obligatorio, mientras que el “ALT” es opcional (y si
se omite, no toma ningún valor por defecto).
Tipos de atributos
Atributos CDATA y NMTOKEN. Los atributos CDATA (character data) son
los más sencillos, y pueden contener casi cualquier cosa. Los atributos
NMTOKEN (name token) son parecidos, pero sólo aceptan los caracteres váli-
dos para nombrar cosas (letras, números, puntos, guiones, subrayados y los dos
puntos).
<!ATTLIST mensaje fecha CDATA #REQUIRED>
<mensaje fecha="15 de Julio de 1999">
<!ATTLIST mensaje fecha NMTOKEN #REQUIRED>
<mensaje fecha="15-7-1999">
Atributos enumerados y notaciones. Los atributos enumerados son aquellos
que sólo pueden contener un valor de entre un número reducido de opciones.
<!ATTLIST mensaje prioridad (normal | urgente)
normal>
Existe otro tipo de atributo parecido, llamado de
notación (NOTATION). Este tipo permite al autor
declarar que su valor se ajusta a una notación decla-
rada.
<!ATTLIST mensaje fecha NOTATION (ISO-DATE |
EUROPEAN-DATE) #REQUIRED>
Para declarar las notaciones, se utiliza <!NOTATION
con una definición externa de la notación. La
FIGURA 6
Ejemplo que ilustra la Lista de Atributos
<mensaje prioridad="urgente">
<de>Alfredo Reino</de>
<a>Hans van Parijs</a>
<texto idioma="holandés">
Hallo Hans, hoe gaat het?
...
</texto>
</mensaje>
<!ELEMENT mensaje (de, a, texto)>
<!ATTLIST mensaje prioridad (normal | urgente) normal>
<!ELEMENT texto(#PCDATA)>
<!ATTLIST texto idioma CDATA #REQUIRED>
NÚMERO 46 HELP400 Suplemento Técnico 11
definición externa puede ser pública o un identificador del sistema para la
documentación de la notación, una especificación formal o un asistente de la
aplicación que contenga objetos representados en la notación.
<!NOTATION HTML SYSTEM "http://www.w3.org/Markup">
<!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Atributos ID e IDREF. El tipo ID permite que un atributo determinado tenga
un nombre único que podrá ser referenciado por un atributo de otro elemento
que sea de tipo IDREF. Por ejemplo, para implementar un sencillo sistema de
hipervínculos en un documento:
<!ELEMENT enlace EMPTY>
<!ATTLIST enlace destino IDREF #REQUIRED>
<!ELEMENT capitulo (parrafo)*>
<!ATTLIST capitulo referencia ID #IMPLIED>
En este caso, una etiqueta <enlace destino="seccion-3"> haría referencia a
un <capitulo referencia="seccion-3">, de forma que el procesador XML lo podría
convertir en un hipervínculo, u otra cosa.
Declaración de entidades
Mediante el uso de entidades, XML hace referencia a objetos (ficheros, páginas
web, imágenes, etc) que no deben ser analizados sintácticamente según las re-
glas de XML. Se declaran en la DTD mediante el uso de <!ENTITY
Una entidad puede no ser más que una abreviatura que se utiliza como una
forma corta de algunos textos. Al usar una referencia a esta entidad, el analiza-
dor sintáctico reemplaza la referencia con su contenido. En otras ocasiones es
una referencia a un objeto externo o local.
Las entidades pueden ser: Internas o Externas, Analizadas o No analizadas,
y Generales o Parámetro.
Entidades generales internas. Son las más sencillas y básicamente son abre-
viaturas definidas en la sección de la DTD del documento XML. Son siempre
entidades analizadas, es decir, una vez reemplazada la referencia a la entidad
por su contenido, pasa a ser parte del documento XML y como tal, es analizada
por el procesador XML.
<!DOCTYPE texto[
<!ENTITY alf "Alien Life Form">
]>
<texto><titulo>Un día en la vida de un &alf;</titulo></texto>
Entidades generales externas analizadas. Las entidades externas obtie-
nen su contenido en cualquier otro sitio del sistema, ya sea otro archivo del
disco duro, una página web o un objeto de una base de datos. Se hace referencia
al contenido de una entidad así mediante la palabra SYSTEM seguida de un
URI (Universal Resource Identifier)
<!ENTITY intro SYSTEM "http://www.miservidor.com/intro.xml">
Entidades no analizadas. Evidentemente, si el contenido de la entidad co-
rresponde a un archivo MPEG, una imagen GIF o un fichero ejecutable EXE
(por ejemplo), el procesador XML no debería intentar interpretarlo como si fue-
ra texto XML.
12 HELP400 Suplemento Técnico
Este tipo de entidades siempre son generales y externas.
<!ENTITY logo SYSTEM "http://www.miservidor.com/logo.gif">
Entidades parámetro internas y externas. Se denominan entidades
parámetro a aquellas que sólo pueden utilizarse en la DTD, y no en el documen-
to XML. Se pueden utilizar para agrupar ciertos elementos del DTD que se
repitan mucho. Se diferencian las entidades parámetro de las generales, en que
para hacer referencia a ellas, se usa el símbolo “ % ” en lugar de “ & ” tanto como
para declararlas como para usarlas.
<!DOCTYPE texto[
<!ENTITY % elemento-alf "<!ELEMENT ALF (#PCDATA)>">
...
%elemento-alf;
]>
Tambien puede ser externa:
<!DOCTYPE texto[
<!ENTITY % elemento-alf SYSTEM «alf.ent»>
...
%elemento-alf;
]>
Ejemplo de DTD
Un ejemplo de DTD que puede servir para resumir todo lo visto hasta ahora
podría definrnos un lenguaje de marcado para una base de datos de personas
con direcciones e-mail. El fichero LISTIN.DTD podría ser algo así:
<?xml encoding="UTF-8"?>
<!ELEMENT listin (persona)+>
<!ELEMENT persona (nombre, email*, relacion?)>
<!ATTLIST persona id ID #REQUIRED>
<!ATTLIST persona sexo (hombre | mujer) #IMPLIED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT relacion EMPTY>
<!ATTLIST relacion amigo-de IDREFS #IMPLIED enemigo-de IDREFS #IMPLIED>
Par finalizar, y basándonos en este DTD, podríamos escribir nuestro primer
listín en XML:
<?xml version="1.0"?>
<!DOCTYPE listin SYSTEM "LISTIN.DTD">
<listin>
<persona sexo="hombre" id="ricky">
<nombre>Ricky Martin</nombre>
<email>ricky@puerto-rico.com</email>
<relacion amigo-de="laetitia"/>
</persona>
<persona sexo="mujer" id="laetitia">
<nombre>Laetitia Casta</nombre>
<email>castal@micasa.com</email>
</persona>
</listin> q
Alfredo Reino es informático profesional y posee las certificaciones MCSE y MCSA de Microsoft y CCNA de Cisco.
Su página web la hallarás en http://www.areino.com

Más contenido relacionado

Destacado

Londres Albert
Londres AlbertLondres Albert
Londres Albertesegarr4
 
Presentacion de torrente
Presentacion de torrentePresentacion de torrente
Presentacion de torrenteantoniolarainf1
 
Adrian y santiago tp3
Adrian y santiago tp3Adrian y santiago tp3
Adrian y santiago tp3achaila
 
Exposicion de negocios virtuales e commerce
Exposicion de negocios virtuales e commerceExposicion de negocios virtuales e commerce
Exposicion de negocios virtuales e commercethegianello24
 
Diseño de proyectos_evaluación_final
Diseño de proyectos_evaluación_finalDiseño de proyectos_evaluación_final
Diseño de proyectos_evaluación_finalPaola Andrea Preciado
 
Londres Magi
Londres MagiLondres Magi
Londres Magiesegarr4
 
La prospectiva y su aplicación desde la escuela[1]
La  prospectiva y su aplicación desde la escuela[1]La  prospectiva y su aplicación desde la escuela[1]
La prospectiva y su aplicación desde la escuela[1]lauravirgen
 
Unión europea Juan
Unión europea  JuanUnión europea  Juan
Unión europea Juanjvcole1
 
Actividades diversas en el colegio
Actividades diversas  en el colegioActividades diversas  en el colegio
Actividades diversas en el colegioeduargamez
 
Jahmila y paula plastics
Jahmila y paula plasticsJahmila y paula plastics
Jahmila y paula plasticsjahmila
 

Destacado (20)

Gestion de efectivo v.3
Gestion de efectivo v.3Gestion de efectivo v.3
Gestion de efectivo v.3
 
Londres Albert
Londres AlbertLondres Albert
Londres Albert
 
Presentacion de torrente
Presentacion de torrentePresentacion de torrente
Presentacion de torrente
 
Hablary callar
Hablary callarHablary callar
Hablary callar
 
Adrian y santiago tp3
Adrian y santiago tp3Adrian y santiago tp3
Adrian y santiago tp3
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
Tutorial timerime
Tutorial timerimeTutorial timerime
Tutorial timerime
 
Horde
HordeHorde
Horde
 
Exposicion de negocios virtuales e commerce
Exposicion de negocios virtuales e commerceExposicion de negocios virtuales e commerce
Exposicion de negocios virtuales e commerce
 
Diseño de proyectos_evaluación_final
Diseño de proyectos_evaluación_finalDiseño de proyectos_evaluación_final
Diseño de proyectos_evaluación_final
 
Londres Magi
Londres MagiLondres Magi
Londres Magi
 
La prospectiva y su aplicación desde la escuela[1]
La  prospectiva y su aplicación desde la escuela[1]La  prospectiva y su aplicación desde la escuela[1]
La prospectiva y su aplicación desde la escuela[1]
 
Unión europea Juan
Unión europea  JuanUnión europea  Juan
Unión europea Juan
 
Actividades diversas en el colegio
Actividades diversas  en el colegioActividades diversas  en el colegio
Actividades diversas en el colegio
 
Presentación2
Presentación2Presentación2
Presentación2
 
creatividad publicitaria
creatividad publicitariacreatividad publicitaria
creatividad publicitaria
 
EL AGUA.....
EL AGUA.....EL AGUA.....
EL AGUA.....
 
Cuentos populares
Cuentos popularesCuentos populares
Cuentos populares
 
Jahmila y paula plastics
Jahmila y paula plasticsJahmila y paula plastics
Jahmila y paula plastics
 
Weblessonmechas
WeblessonmechasWeblessonmechas
Weblessonmechas
 

Similar a XML para principiantes (20)

Extensible markup lenguaje
Extensible markup lenguajeExtensible markup lenguaje
Extensible markup lenguaje
 
Xml 3a6 jairon rodriguez
Xml 3a6 jairon rodriguezXml 3a6 jairon rodriguez
Xml 3a6 jairon rodriguez
 
Que es el xml2
Que es el xml2Que es el xml2
Que es el xml2
 
Xml para todos
Xml para todosXml para todos
Xml para todos
 
FORMATO XML
FORMATO XMLFORMATO XML
FORMATO XML
 
Que es el xml
Que es el xmlQue es el xml
Que es el xml
 
Computacion
ComputacionComputacion
Computacion
 
Presentación1 bricio vera
Presentación1 bricio veraPresentación1 bricio vera
Presentación1 bricio vera
 
Lenguaje XML
Lenguaje XMLLenguaje XML
Lenguaje XML
 
Guevara 2 c3
Guevara 2 c3Guevara 2 c3
Guevara 2 c3
 
Cinthya
CinthyaCinthya
Cinthya
 
Trabajo compu en_wiki
Trabajo compu en_wikiTrabajo compu en_wiki
Trabajo compu en_wiki
 
Mera macias kerly diferencia entre html y xml presentasion prep
Mera macias kerly diferencia entre  html y xml presentasion prepMera macias kerly diferencia entre  html y xml presentasion prep
Mera macias kerly diferencia entre html y xml presentasion prep
 
Lenguaje de programacion 2
Lenguaje de programacion 2Lenguaje de programacion 2
Lenguaje de programacion 2
 
DIAPOSITIVAS CUARTO PERIODO
DIAPOSITIVAS CUARTO PERIODODIAPOSITIVAS CUARTO PERIODO
DIAPOSITIVAS CUARTO PERIODO
 
Extensible markup language
Extensible markup languageExtensible markup language
Extensible markup language
 
Internet (www)[1]
Internet (www)[1]Internet (www)[1]
Internet (www)[1]
 
XML EDGAR ABRAHAM
XML EDGAR ABRAHAMXML EDGAR ABRAHAM
XML EDGAR ABRAHAM
 
El lenguaje XML y su uso
El lenguaje XML y su usoEl lenguaje XML y su uso
El lenguaje XML y su uso
 
Xml
XmlXml
Xml
 

Último

Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (20)

Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

XML para principiantes

  • 1. NÚMERO 46 HELP400 Suplemento Técnico 1 Suplemento técnico del número 126 de NEWS/400 46Septiembre2002 VoyaaprenderXML¿meacompañas? Si como profesional tenías pensado profundizar en alguna nueva tecnología, ésta debe ser, sin más demora, XML. Aunque en estos momentos no tenga muy claro cuál es el camino a seguir, si me acompañas, lo recorreremos juntos. Por Carlos Bell A parte de lo que había ido leyendo por Internet, la primera vez que pensé seriamente que el aprender XML podía ser muy interesante desde el punto de vista de cualquier profesional de las Tecnologías de la Informa- ción fue cuando leí el artículo “XML cruza fronteras” de Sharon L. Hoffman, publicado en el número 107 de NEWS/400. Convencido de ello, me hice el firme propósito de destinar algo de tiempo a indagar en los fundamentos de esa nue- va panacea que prometía ser el XML (eXtensible Markup Language). Pero ya se sabe, cuando uno es algo perezoso y falto de voluntad, cualquier excusa es bue- na para posponer un buen propósito. Sin duda, para hacerme sentir culpable, en NEWS/400 volvieron a la carga, esta vez con un artículo divulgativo (francamente bueno) en donde Eduardo Ross (vicepresidente y director de investigación y desarrollo en ASNA desde 1987) nos exponía, bajo el sujestivo título de “XML: lenguaje para negocios electrónicos” (publicado en el número 111) los principios y posibilidades del XML de una forma clara y sencilla. Esta vez sí. Realmente estaba decidido: aprenderé XML sea como sea, me dije. Empecé a visitar páginas web específicas y a seleccionar y copiar parte de su contenido. Megas y megas de información acumulándose en carpetas y subcarpetas en el disco duro de mi PC esperando, vanamente, que “alguien” les diera una segunda oportunidad... Y al final, así ha sido. NEWS/400 tenía planificado para este número que los temas de portada se centraran en la utilización de XML en nuestra plataforma. ¿Qué mejor ocasión para comprometerme públicamente a destinar algo de mi tiempo personal para aprender XML como si fuera un juego? Al fin y al cabo, para dar los primeros pasos, con un simple editor de textos (como el Notepad de Microsoft), una versión actualizada de su navegador y los cientos de artículos que podemos encontrar en Internet, es suficiente. Si como profesional te habías planteado profundizar “un día de esos” en algu- na nueva tecnología, ésta debe ser, sin lugar a dudas, XML. Son tantas sus posibilidades y tantos los esfuerzos que realiza la industria para que el XML se generalice que hasta NOVATICA, la más decana y académica de las revistas informáticas españolas, le dedicará su próxima monografía. Y este mes de Sep- tiembre, en que de forma alegórica iniciamos un nuevo curso, es el mejor mo- mento para hacerlo. ¿Me acompañas? q q q SUMARIO 1 Voy a aprender XML ¿me acompañas? 4 Estructura de un documentoXML 8 DTD:DocumentType Definitions
  • 2. 2 HELP400 Suplemento Técnico Suplemento Técnico de NEWS/400 Director General Alberto C. Blanch Llangostera a.blanch@help400.com Director Antonio Montía a.montia@help400.com Coordinación Carlos Bell Jaime Gustavo Estany Maquetación y Producción Complay, S.L. complay@retemail.es Impresión Policrom, S.A. EDITA Publicaciones HELP400, S.L. APTDO. DE CORREOS 8003 - 08080 Barcelona Gran Vía C. Catalanes, 715, Entlo. 3ª 08013 - Barcelona Tel. :93.231.00.49 Fax :93.231.03.09 E-mail: suplemento@help400.com Web:http://www.help400.com Deposito legal: B-2757-90 I.S.S.N. 1133-8067 Suscripción: Anual (10 números al año). España: 96 • . Se distribuye conjuntamente con el ejemplar de NEWS/ 400, sin cargo para sus suscriptores. © Publicaciones HELP400, S.L. Se prohibe la repro- ducción total o parcial del contenido sin autorización previa y por escrito de la empresa editora, titular del Copyright. Todos los derechos reservados en cualquier idioma. De las ideas expuestas en los artículos firmados son respon- sables sus autores. Corresponde al lector el asegurar que las noticias, técnicas y procedimientos descritos son ade- cuados para su instalación. Publicaciones HELP400 S.L. no asume ninguna garantía ni implícita ni explicitamente. IBM y AS/400 son marcas registradas por International Business Machines. El movimiento se demuestra andando Conste que os he tendido una trampa. En el momento de redactar estas líneas, aparte del firme propósito de seguir adelante, no tengo muy claro cuál es el camino a seguir ni los pasos que vamos a dar. Lo que si está claro es que la mejor forma de aprender a programar (una vez conocidos los fundamentos de un determinado lenguaje), es programando. Y aunque XML no sea un lenguaje de programación propiamente dicho sino un meta-lenguaje de marcado que per- mite describir secuencias de datos, sólo practicándolo lograremos familiarizar- nos con él y con las tecnologías a él asociadas. Dicho esto, recomendarte un poco de constancia y de paciencia. El “curso” acaba de comenzar y durante varios meses (XML da para eso y mucho más), a través de HELP400 y de la información disponible en Internet, vamos a ser compañeros, y de paso, vamos a aprender un buen número de siglas y de nuevos conceptos. Eso sí: también deberías estar algo familiarizado con el desarrollo de páginas web (HTML y CSS) y algo de JavaScript y/o VisualScript porque me propongo, partiendo de asimilar las principales caracteristicas y posibilidades del XML, llegar hasta el desarrollo de una aplicación gráfica (para el Internet Explorer) que nos permita jugar con diferentes formatos XML aceptados como estándares, como puedan ser SVG (Scalable Vector Graphics) que permite crear páginas web con grafismos y textos vectorizados o RDF (Resource Description Framework) un modelo de datos en XML que permite describir recursos y su relación entre ellos ¿Por qué XML? Desarrollado a partir de 1996 como un subconjunto de SGML (Standard Generalized Markup Language), en 1998 XML fue adoptado como estándar por el W3C (World Wide Web Consor- tium). Desde entonces se ha convertido en un estándar interna- cionalmente reconocido que no pertenece a ninguna compañía y cuya libre utilización y versatilidad (figura 1) facilitará el uso efectivo de Internet en diferentes alfabetos, por personas con minusvalías físicas y en diferente hardware (teléfonos celula- res, PDAs, terminales Braille, etc.). Al ser fácilmente procesable tanto por humanos como por soft- ware y separar radicalmente la información o contenido de su presentación o formato, un documento XML puede tener mu- chas formas de presentación (HTML, PDF, SVG, VML...) facili- tando a los diseñadores de páginas web hacer cambios de estilo de manera sistemática. De hecho XML es, además, el formato ideal para transacciones B2B, permitiendo poderosas técnicas de extracción y de data-mining. Los programadores también consideran que XML es un for- mato adecuado para intercambiar estructuras complejas como parámetros. Un ejemplo sería el Lenguaje de marcas de llama- das a programas (PCML) que utiliza IBM en su “Toolbox para Java” para hacer llamadas a programas. También pueden en- contrarse ejemplos de XML siendo utilizado para implementar interfaces con objetos remotos para evitar la actividad general asociada a RMI (Remote Method Invocation) y a CORBA (Common Object Request Broker Architecture). XML se está con- virtiendo en una herramienta imprescindible en la caja de he- rramientas de cualquier programador. Como se trata de una herramienta excelente para el inter- cambio de datos entre distintas aplicaciones, sistemas y empre- sas, XML está sustituyendo rápidamente a las tradicionales
  • 3. NÚMERO 46 HELP400 Suplemento Técnico 3 corrientes de datos EDI (como X.12) como sistema de intercambio de documen- tos entre empresas. Muchas industrias, empresas de servicios (compañías de seguros y bancos) y del ámbito de la distribución están definiendo diferentes DTD (Definición de Tipo de Documento) para los documentos clave que necesi- tan transmitirse entre sus miembros. El uso más ambicioso y prometedor de XML está en los servicios web (Web Services). Esta tecnología emergente se basa en localizar servicios, tanto si es- tán en Internet como en una intranet, y en ejecutarlos se encuentren donde se encuentren y sea cual sea su plataforma. XML es un puntal fundamental para la comunicación de componentes, claves del modelo de servicios web. Es de des- tacar que Microsoft está adoptando en su iniciativa .NET los servicios web y XML, lo que sienta las bases para la intercomunicación entre los sistemas .NET y J2EE. Esta increíble gama de posibilidades es la que confiere a XML su potencia. El sencillo concepto en que se basa (datos que se describen a sí mismos) está te- niendo un profundo impacto. Ha llegado la hora de averiguar en qué puede ayudarnos. Créditos y reconocimientos Como para elaborar estos “apuntes” recurriré a textos, artículos y ejemplos re- cuperados de Internet (sí, esos que dormían en el disco duro de mi PC o los nuevos que se van publicando), en modo alguno quisiera atribuirme su autoría. Y puesto que de forma consciente pretendo dar una hogeneidad al conjunto, en muchos casos me veré obligado a entremezclar contenidos de distinta proceden- cia (intentando respetar al máximo el original) de la que, en la medida de lo posible, indicaré sus referencias. Para establecer un primer contacto, he utilizado tres artículos: el primero, “Introducción a XML en castellano - Versión 2.0”, original de Alfredo Reino (www.ibium.com/alf/xml/index.asp) preparado para el “IV Simpósium Interna- cional de Telemática”, de la Universidad de Colima (México) en Mayo de 2000 (texto parcialmente utilizado en este número). El segundo, “Introducción al XML - Versión 2 - 18/7/2001” original de Jai- me E. Villate (http://www.laespiral.org/xml/) de la Universidad de Oporto, pre- parado para un Seminario sobre Programa- ción en entorno GNU/Linux, celebrado en la universidad Rey Juan Carlos (Madrid, Es- paña). El tercero, del que me hubiera gustado in- cluir varios fragmentos, es el artículo de Ra- món Montero, titulado “XML, el lenguaje universal”, que puedes hallar en sus pági- nas web (http://www.ramon.org/xml/ articulos/intro_xml-html.htm). Te recomiendo la lectura de los tres, casi casi de forma inmediata. Como podrás compobar, los fundamentos de XML son muy sencillos. En las siguientes páginas veremos cómo crear documentos XML bien-formados, y que sean válidos, es decir, que estén conformes a una determina- da DTD (Document Type Definition). Próximamente veremos la creación y uso de hojas de estilo (XSL) para la presentación de los datos, así como diferentes aplicacio- nes actuales de XML. q FIGURA 1 Versatilidad del contenido XML
  • 4. 4 HELP400 Suplemento Técnico EstructuradeundocumentoXML XML (eXtensible Markup Language) no es, como su nombre podría sugerirnos, un lenguaje de marcado. XML es un meta-lenguaje que nos permite definir datos y lenguajes de marcado, adecuados a usos determinados. Por Alfredo Reino A unque a primera vista un documento XML puede parecer similar a HTML, hay una diferencia sustancial. Un documento XML contiene, exclusiva- mente, datos que se autodefinen. Un documento HTML contiene datos mal definidos, mezclados con elementos de formato. En XML se separa el conte- nido de la presentación de forma total. A un nivel muy básico, los documentos XML son ficheros de texto plano en los que sólo existen cinco caracteres especiales o reservados (los símbolos me- nor que “ < ”, mayor que “ > ”, las comillas dobles “ " ”, el apóstrofo [o comilla simple] “ ' ” y el caracter “ &”) que nos permiten crear las marcas (o etiquetas) que dan estructura al documento XML. Cada marca tiene un nombre que, a su vez, puede contener uno o más atributos. Como veremos, cuando en el texto de los datos es necesario utilizar uno de los 5 caracteres especiales, para evitar que sea interpretado como un marcador se sustituye por una “entidad” (&lt;, &gt;, &quot;, &apos;, &amp;). Una forma de entender rápidamente la es- tructura de un documento XML, es analizando el pequeño ejemplo incluido en la figura 1. Este mismo documento, para comprender mejor su estructura, podría ser representado gráficamen- te como en la figura 2. Documentos XML bien-formados Existen un número de diferencias entre la sin- taxis de HTML y XML. Es útil, para aquellos que saben HTML y quieren usar XML, cono- cerlas perfectamente, para poder crear docu- mentos XML bien-formados. Estructura jerárquica de elementos. Los do- cumentos XML deben seguir una estructura es- trictamente jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Una eti- queta debe estar correctamente incluida en otra. Además, los elementos con contenido, de- ben estar correctamente cerrados. En el siguien- te ejemplo, la primera línea <LI> sería incorrec- ta en XML, no así la segunda: <LI>HTML <B>permite <I>esto</B></I>. <LI>En XML la <B>estructura <I>es</I> jerár- quica</B>.</LI> Etiquetas vacías. HTML permiten elementos sin contenido. Como ya veremos, XML también, FIGURA 2 Representación gráfica del ejemplo anterior nombre: Alfredo Reino email: alf@ibiun.com nombre: Bill Clinton emial: president@whitehouse.gov parrafo: ¿Hola qué tal?... ... remite destinatario asunto: Hola Bill texto mensaje FIGURA 1 Documento XML: un pequeño ejemplo <?xml version=»1.0"?> <!DOCTYPE MENSAJE SYSTEM "mensaje.dtd"> <mensaje> <remite> <nombre>Alfredo Reino</nombre> <email>alf@myemail.com</email> </remite> <destinatario> <nombre>Bill Clinton</nombre> <email>president@whitehouse.gov</email> </destinatario> <asunto>Hola Bill</asunto> <texto> <parrafo>¿Hola qué tal? Hace <enfasis>mucho</enfasis> que no escribes. A ver si llamas y quedamos para tomar algo. </parrafo> </texto> </mensaje>
  • 5. NÚMERO 46 HELP400 Suplemento Técnico 5 pero la etiqueta debe ser <elemento-sin-contenido/> En el siguiente ejemplo, la primera línea sería incorrecta en XML, no así la segunda: <LI>Esto es HTML<BR>en el que casi todo está permitido</LI> <LI>El XML, es<BR/> más restrictivos.</LI> Un solo elemento raiz. Los documentos XML sólo permiten un elemento raiz, del que todos los demás son parte. Es decir, la jerarquía de elementos de un documento XML bien-formado sólo puede tener un elemento inicial. Valores de atributos. Los valores de atributos en XML, al contrario de HTML, siempre deben estar encerrados entre comillas simples o dobles. En el siguiente ejemplo, la primera línea sería incorrecta en XML: <A HREF=http://www.disney.com/> <A HREF="http://www.developer.com/"> Tipo de letra, espacios en blanco. El XML es sensible al tipo de letra utiliza- do, es decir, trata las mayúsculas y minúsculas como caracteres diferentes. Si un elemento de XML está definido como “ELEMENTO”, no podemos usar “ele- mento”, ni “Elemento” para referirnos a él. Existe un conjunto de caracteres denominados “espacios en blanco” que los procesadores XML tratan de forma diferente en el marcado XML. Estos carac- teres son los “espacios” (Unicode/ASCII 32), tabuladores (Unicode/ASCII 9), retornos de carro (Unicode/ASCII 13) y los saltos de línea (Unicode/ASCII 10). La especificación XML 1.0 permite su utilización para hacer más legible el código, y en general son ignorados por los procesadores XML. En otros casos, sin embargo, resultan muy significativos, por ejemplo, para separar las palabras en un texto, o para separar lineas de párrafos diferentes. Nombrando cosas. Al utilizar XML, es necesario asignar nombres a las es- tructuras, tipos de elementos, entidades, elementos particulares, etc. En XML los nombres tienen algunas características en común. Según la especificación XML 1.0: “Un nombre [empieza] con una letra o uno o más signos de puntuación, y [continúa] con letras, dígitos, guiones, rayas, dos puntos o puntos, denominados de forma global como caracteres de nombre. Los nombres que empiezan con la cadena "xml", se reservan para la estandarización de ésta o de futuras versiones de esta especificación” Resumiendo, no se pueden crear nombres que empiecen con la cadena “xml”, “XML” o cualquier otra variante. Las letras y rayas se pueden usar en cual- quier parte del nombre. Se pueden incluir dígitos, guiones y caracteres de puntua- ción, pero no se puede empezar por ninguno de ellos. El resto de caracteres, como algunos símbolos, y espacios en blanco, no se pueden usar. Marcado y datos. Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan “marcas”. Éstas son las partes del documento que el procesador XML espera entender. El resto del documento que se encuentra entre las marcas, contiene los datos entendibles por las personas. Es sencillo reconocer las marcas en un documento XML. Son aquellas porcio- nes que empiezan con “<” y acaban con “>”, o bien, en el caso de las referencias de entidad, empiezan por “&”y acaban con “ ; ”. El prólogo Aunque no es obligatorio, los documentos XML pueden empezar con unas línea que describen la versión de XML, el tipo de documento, y otras cosas.
  • 6. 6 HELP400 Suplemento Técnico La primera, o “declaración XML”, define la versión de XML utilizada. Hasta ahora sólo hay una, la “1.0”. Además, en la “declaración XML” especificamos la codificación del documento, que puede ser, por ejemplo, US-ASCII (7 bits) o UTF- 8 (código Unicode del que el ASCII es un subconjunto), UCS-2, EUC-JP, Shift_JIS, Big5, ISO-8859-1 hasta ISO-8859-7. En general, y para uso con lenguajes euro- peos (incluyendo el juego de caracteres especiales del castellano, utilizaremos UTF-7 o ISO-8859-1) Además, se puede incluir una declaración de documento autónomo (stand- alone), que controla qué componentes de la DTD (Definición de Tipo de Docu- mento) son necesarios para completar el procesado del documento. <?xml version="1.0" encoding="UTF-7" standalone="yes"?> La segunda, o “declaración de tipo de documento”, define qué tipo de docu- mento estamos creando para ser procesado correctamente. Es decir, definimos qué declaración de Tipo de Documento DTD valida y define los datos que con- tiene nuestro documento XML. En ella se define el tipo de documento, y dónde encontrar la información sobre su “Definición de Tipo de Documento”, mediante un identificador público (PUBLIC) que hace referencia a dicha DTD, o mediante un Identificador Uni- versal de Recursos (URI) precedido por la palabra SYSTEM. Ejemplos: <!DOCTYPE MENSAJE SYSTEM "mensaje.dtd"> <!DOCTYPE HTML PUBLIC "-/ /W3C/ /DTD HTML 3.2 Final/ /EN"> <!DOCTYPE LABEL SYSTEM "http://www.empresa.com/dtds/label.dtd"> Elementos Los elementos XML pueden tener contenido (más elementos, caracteres, o am- bos a la vez), o bien ser elementos vacíos. Un elemento con contenido es, por ejemplo: <nombre>Fulano Mengánez</nombre> <aviso tipo="emergencia" gravedad="mortal">Que no cunda el pánico</aviso> Siempre empieza con una <etiqueta> que puede contener atributos o no, y termina con una </etiqueta> que debe tener el mismo nombre. Al contrario que HTML, en XML siempre se debe cerrar un elemento. Hay que tener en cuenta que el símbolo “ < ” siempre se interpreta como inicio de una etiqueta XML. Si no es el caso, el documento no estará bien-for- mado. Para ciertos símbolos se utilizan las entidades predefinidas, que se expli- can más adelante. Un elemento vacío, es, como su nombre indica, el que no tiene contenido; por ejemplo: <identificador DNI="23123244"/> o <linea-horizontal/> Al no tener una etiqueta de “cierre” que delimite un contenido, se utiliza la forma <etiqueta/>, que puede contener atributos o no. La sintaxis de HTML permite etiquetas vacías tipo <hr> , <br> o <img src="...">. En HTML reformulado para que sea un documento XML bien-formado, se debería utilizar <hr/>. <br/> o <img sec="..."/> Atributos Como ya se ha mencionado, los elementos pueden tener atributos, una manera de incorporar características o propiedades a los elementos de un documento.
  • 7. NÚMERO 46 HELP400 Suplemento Técnico 7 Por ejemplo, un elemento “chiste” puede tener un atributo “tipo” y un atributo “calidad”, con valores como “vascos” y “bueno”, respectivamente. <chiste tipo="vascos" calidad="bueno"> Esto es un dia que Patxi y Josu van paseando…</chiste> En el DTD se especifican los atributos que puede tener cada tipo de elemen- to, así como sus posibles valores y tipos. Al igual que en otras cadenas literales de XML, pueden estar marcados entre comillas simples o dobles. Cuando uno delimita el valor del atributo, el otro se puede utilizar dentro. <verdura clase="zanahoria" longitud=’15" y media’> <cita texto="’Hola buenos dias’, dijo él"> A veces, un elemento con contenido, puede modelarse como un elemento va- cío con atributos. Un concepto se puede representar de muy diversas formas, pero una vez elegida una, es aconsejable fijarla en el DTD, y usar siempre la misma consistentemente dentro de un documento XML. <gato><nombre>Micifú</nombre><raza>Persa</raza></gato> <gato raza="Persa">Micifú</gato> <gato raza="Persa" nombre="Micifú"/> Entidades En XML 1.0 existen cinco entidades predefinidas (&lt;, &gt;, &quot;, &apos;, &amp;). para representar los caracteres especiales menor que “ < ”, mayor que “ > ”, las comillas dobles “ " ”, el apóstrofo y el caracter “ & ” para que éstos no sean interpretados por el procesador XML como un marcado. SeccionesCDATA Existe otra construcción en XML que permite especificar datos, utilizando cual- quier carácter (especial o no) sin que se interprete como marcado XML. Esta construcción, llamada CDATA (Character Data) a ve- ces es necesaria para que los autores de documentos XML, puedan leerlo facilmente sin tener que descifrar los códigos de entidades. La figura 3 muestra un ejemplo, primero usando entidades predefinidas, y luego con un bloque CDATA. Como vemos, dentro de una sección CDATA podemos poner cualquier cosa, que no será interpretada como algo que no es. Existe una excepción, la cadena “]]>” con la que finaliza el bloque CDATA y que no puede utilizarse dentro de una sección CDATA. Comentarios A veces es conveniente insertar comentarios en el do- cumento XML, que sean ignorados por el procesado de la información y las reproducciones del documento. Los comentarios tienen el mismo formato que los comen- tarios de HTML. Es decir, comienzan por la cadena “<!--” y terminan con “-->”. Como vemos en la figura 4, se pueden introducir comentarios en cualquier lugar de la instancia o del prólogo, pero nunca dentro de las declaraciones, eti- quetas, u otros comentarios. q FIGURA 3 Secciones CDATA <ejemplo> &lt;HTML> &lt;HEAD>&lt;TITLE>Rock &amp; Roll&lt;/TITLE>&lt;/HEAD> </ejemplo> <ejemplo> <![CDATA[ <HTML> <HEAD><TITLE>Rock & Roll</TITLE></HEAD> ]]> </ejemplo> FIGURA 4 Comentarios <?xml version="1.0"?> <!— Aquí va el tipo de documento —> <!DOCTYPE EJEMPLO [ <!— Esto es un comentario —> <!ELEMENTO EJEMPLO (#PCDATA)> <!— ¡Eso es todo por ahora! —> ]> <EJEMPLO>texto texto texto bla bla bla <!— Otro comentario —> </EJEMPLO> <!— Ya acabamos —>
  • 8. 8 HELP400 Suplemento Técnico DOCUMENTTYPEDEFINITIONS(DTDs) Las posibles marcas o etiquetas que pueden aparecer en un documento XML y los atributos que éstas pueden tener, son definidas en un fichero llamado “Definición del Tipo de Documento” (en inglés “Document Type Definition” ) o simplemente DTD. Cada documento XML debe indicar al comienzo el DTD usado por medio de una marca <!DOCTYPE> Por Alfredo Reino C rear una definición del tipo de documento (DTD) es como crear nuestro propio lenguaje de marcado, para una aplicación específica. Por ejem- plo, podríamos crear un DTD que defina una tarjeta de visita. A partir de ese DTD, tendríamos una serie de elementos XML que nos permitirían defi- nir tarjetas de visita. La DTD define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos. Los documentos XML que se ajustan a su DTD, se denominan “válidos”. El concepto de “validez” no tiene nada que ver con el de estar “bien-formado”. Un documento XML “bien- fomado” (o “conformado” según la terminología inglesa) simplemente respeta la estructura y sintaxis definidas por la especificación de XML. Un documento “bien-formado” puede, además, ser “válido” si cumple las reglas de una determi- nada DTD. También existen documentos XML sin una DTD asociada, en ese caso aunque no son “válidos”, tampoco son “inválidos”… simplemente están “bien-formados” (… o no). Dónde reside una DTD La DTD puede residir en un fichero externo que quizá esté compartido por va- rios (puede que miles) de documentos. O bien, como hemos visto en el Prólogo de un documento XML, puede estar contenida en el propio documento XML, como parte de su declara- ción de tipo de documento (figura 1). En el ejemplo de la figura, a declaración del tipo de documento comienza en la primera línea y ter- mina con “]>”. Las declaraciones DTD son las lí- neas que empiezan con <!ELEMENT y se denominan declaraciones de tipo elemento. También se pue- den declarar atributos, entidades y anotaciones para una DTD. En el ejemplo anterior, todas las declaraciones DTD que definen “etiqueta” residen dentro del pro- pio documento. Sin embargo, la DTD se puede de- finir parcial o completamente en otro lugar (como en el ejemplo de la figura 2). Declaraciones tipo Elemento Los elementos son la base de las marcas XML, y deben ajustarse a un tipo de documento declarado en una DTD para que el documento XML sea con- siderado válido. Las declaraciones de tipo de elemento deben empezar con <!ELEMENT seguidas por el identifica- dor genérico del elemento que se declara. A FIGURA 1 DTDcomopartedeldocumentoXML <!DOCTYPE etiqueta[ <!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT calle (#PCDATA)> <!ELEMENT ciudad (#PCDATA)> <!ELEMENT pais (#PCDATA)> <!ELEMENT codigo (#PCDATA)> ]> <etiqueta> <nombre>Fulano Mengánez</nombre> <calle>c/ Mayor, 27</calle> <ciudad>Valderredible</ciudad> <pais>España</pais> <codigo>39343</codigo> </etiqueta> <?xml version=»1.0"?> <!DOCTYPE coche SYSTEM «http://www.sitio.com/dtd/coche.dtd»> <coche> <modelo>...</modelo> ... </coche> FIGURA 2 DTD externa
  • 9. NÚMERO 46 HELP400 Suplemento Técnico 9 continuación tienen una especificación de contenido. En los ejemplos incluidos en la figura 3 el elemento <receta> puede contener dentro elementos <titulo>, <ingredientes> y <procedimiento>, que, a su vez, estarán definidos también en la DTD y podrán contener más elementos. Siguiendo la definición de este ele- mento, el primer ejemplo XML de la figura 3 sería válido, pero no así en el segundo. La especificación de contenido puede ser de cuatro tipos: EMPTY - Puede no tener contenido. Suele usarse para los atributos. ANY - Puede tener cualquier contenido. No se suele utilizar, ya que es conve- niente estructurar adecuadamente nuestros documentos XML. Mixed - Puede tener caracteres de tipo datos o una mezcla de caracteres y sub-elementos especificados en la especificación de contenido mixto. Según los ejemplos de la figura 4, el elemento definido como <enfasis> puede contener datos de carácter (#PCDATA). Y el definido como <parrafo> puede contener tan- to datos de carácter (#PCDATA) como sub-elementos de tipo <enfasis>. Element - Sólo puede contener sub-elementos especificados en la especifica- ción de contenido. Para declarar que un tipo de elemento tenga contenido de elementos se especi- fica un modelo de contenido en lugar de una especificación de contenido mixto o una de las claves ya descritas. Modelos de contenido Un modelo de contenido es un patrón que establece los sub-elementos acepta- dos, y el orden en que se aceptan. Un modelo sencillo puede tener un solo tipo de sub-elemento; uno complejo, puede llegar a reque- rir indicadores de frecuencia. Analicemos algunos ejemplos: <!ELEMENT aviso (parrafo)> nos indica que <aviso> sólo puede contener un solo <parrafo>. <!ELEMENT aviso (titulo, parrafo)> En este caso la coma denota una secuencia. Es decir, el elemen- to <aviso> debe contener un <titulo> seguido de un <parrafo>. <!ELEMENT aviso (parrafo | grafico)> La barra vertical “|” indica una opción. Es decir, <aviso> puede contener o bien un <parrafo> o bien un <grafico>. El número de opciones no está limitado a dos, y se pueden agrupar usando paréntesis. <!ELEMENT aviso (titulo, (parrafo | grafico))> En ese caso, <aviso> debe contener un <titulo> se- guido de un <parrafo> o de un <grafico>. Cada partícula de contenido puede llevar un indi- cador de frecuencia (figura 5), que siguen directa- mente a un identificador general, una secuencia o una opción, y no pueden ir precedidos por espacios en blan- co. Para entenderlo, comentemos el último ejemplo incuido en la figura 4. En este caso, <aviso> puede tener <titulo>, o no (pero sólo uno), y puede tener cero o más conjuntos <parrafo><grafico>, <parrafo> <parrafo><grafico>, etc. FIGURA 3 Declaración de tipo de elemento <!ELEMENT receta (titulo, ingredientes, procedimiento)> --- Ejemplo XML correcto --- <receta> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta> --- Ejemplo XML incorrecto --- <receta> <parrafo>Esto es un párrafo</parrafo> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta> FIGURA 4 Ejemplos de especificación de contenidos <!ELEMENT salto-de-pagina EMPTY> <!ELEMENT batiburrillo ANY> <!ELEMENT enfasis (#PCDATA)> <!ELEMENT parrafo (#PCDATA|enfasis)*> <!ELEMENT mensaje (remite, destinatario, texto)> <!ELEMENT aviso (titulo?, (parrafo+, grafico)*)> FIGURA 5 Indicadores de frecuencia ? Opcional (0 o 1 vez) * Opcional y repetible (0 o más veces) + Necesario y repetible (1 o más veces)
  • 10. 10 HELP400 Suplemento Técnico Declaraciones de Lista de Atributos Los atributos permiten añadir información adicional a los elementos de un do- cumento. La principal diferencia entre los elementos y los atributos, es que los atributos no pueden contener sub-atributos. Se usan para añadir información corta, sencilla y desestructurada. Otra diferencia entre los atributos y los elementos, es que cada uno de los atributos sólo se puede especificar una vez, y en cualquier orden. La figura 6 muestra un ejemplo XML y la lista de los elementos <mensaje> y <texto> de dicho ejemplo. Las declaraciones de los atributos empiezan con <!ATTLIST seguido del identificador del elemento al que se aplica el atributo. Le siguen el nombre del atributo, su tipo y su valor por defecto. En el ejemplo, el atributo “prioridad” puede estar en el elemento <mensaje> y puede tener el valor “normal” o “urgente”, siendo “normal” el valor por defecto si no especifica- mos el atributo. El atributo “idioma”, pertenece al elemento texto, y puede contener datos de carácter (CDATA). Es más, #REQUIRED significa que no tiene valor por defecto, ya que es obligatorio especificar este atributo. A menudo interesa que se pueda omitir un atributo, sin que se adopte automáticamente un valor por defecto. Para esto se usa la condición #IMPLIED. Por ejemplo, en una supuesta DTD que defina la etiqueta <IMG> de HTML: <!ATTLIST IMG URL CDATA #REQUIRED ALT CDATE #IMPLIED> es decir, el atributo “URL” es obligatorio, mientras que el “ALT” es opcional (y si se omite, no toma ningún valor por defecto). Tipos de atributos Atributos CDATA y NMTOKEN. Los atributos CDATA (character data) son los más sencillos, y pueden contener casi cualquier cosa. Los atributos NMTOKEN (name token) son parecidos, pero sólo aceptan los caracteres váli- dos para nombrar cosas (letras, números, puntos, guiones, subrayados y los dos puntos). <!ATTLIST mensaje fecha CDATA #REQUIRED> <mensaje fecha="15 de Julio de 1999"> <!ATTLIST mensaje fecha NMTOKEN #REQUIRED> <mensaje fecha="15-7-1999"> Atributos enumerados y notaciones. Los atributos enumerados son aquellos que sólo pueden contener un valor de entre un número reducido de opciones. <!ATTLIST mensaje prioridad (normal | urgente) normal> Existe otro tipo de atributo parecido, llamado de notación (NOTATION). Este tipo permite al autor declarar que su valor se ajusta a una notación decla- rada. <!ATTLIST mensaje fecha NOTATION (ISO-DATE | EUROPEAN-DATE) #REQUIRED> Para declarar las notaciones, se utiliza <!NOTATION con una definición externa de la notación. La FIGURA 6 Ejemplo que ilustra la Lista de Atributos <mensaje prioridad="urgente"> <de>Alfredo Reino</de> <a>Hans van Parijs</a> <texto idioma="holandés"> Hallo Hans, hoe gaat het? ... </texto> </mensaje> <!ELEMENT mensaje (de, a, texto)> <!ATTLIST mensaje prioridad (normal | urgente) normal> <!ELEMENT texto(#PCDATA)> <!ATTLIST texto idioma CDATA #REQUIRED>
  • 11. NÚMERO 46 HELP400 Suplemento Técnico 11 definición externa puede ser pública o un identificador del sistema para la documentación de la notación, una especificación formal o un asistente de la aplicación que contenga objetos representados en la notación. <!NOTATION HTML SYSTEM "http://www.w3.org/Markup"> <!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> Atributos ID e IDREF. El tipo ID permite que un atributo determinado tenga un nombre único que podrá ser referenciado por un atributo de otro elemento que sea de tipo IDREF. Por ejemplo, para implementar un sencillo sistema de hipervínculos en un documento: <!ELEMENT enlace EMPTY> <!ATTLIST enlace destino IDREF #REQUIRED> <!ELEMENT capitulo (parrafo)*> <!ATTLIST capitulo referencia ID #IMPLIED> En este caso, una etiqueta <enlace destino="seccion-3"> haría referencia a un <capitulo referencia="seccion-3">, de forma que el procesador XML lo podría convertir en un hipervínculo, u otra cosa. Declaración de entidades Mediante el uso de entidades, XML hace referencia a objetos (ficheros, páginas web, imágenes, etc) que no deben ser analizados sintácticamente según las re- glas de XML. Se declaran en la DTD mediante el uso de <!ENTITY Una entidad puede no ser más que una abreviatura que se utiliza como una forma corta de algunos textos. Al usar una referencia a esta entidad, el analiza- dor sintáctico reemplaza la referencia con su contenido. En otras ocasiones es una referencia a un objeto externo o local. Las entidades pueden ser: Internas o Externas, Analizadas o No analizadas, y Generales o Parámetro. Entidades generales internas. Son las más sencillas y básicamente son abre- viaturas definidas en la sección de la DTD del documento XML. Son siempre entidades analizadas, es decir, una vez reemplazada la referencia a la entidad por su contenido, pasa a ser parte del documento XML y como tal, es analizada por el procesador XML. <!DOCTYPE texto[ <!ENTITY alf "Alien Life Form"> ]> <texto><titulo>Un día en la vida de un &alf;</titulo></texto> Entidades generales externas analizadas. Las entidades externas obtie- nen su contenido en cualquier otro sitio del sistema, ya sea otro archivo del disco duro, una página web o un objeto de una base de datos. Se hace referencia al contenido de una entidad así mediante la palabra SYSTEM seguida de un URI (Universal Resource Identifier) <!ENTITY intro SYSTEM "http://www.miservidor.com/intro.xml"> Entidades no analizadas. Evidentemente, si el contenido de la entidad co- rresponde a un archivo MPEG, una imagen GIF o un fichero ejecutable EXE (por ejemplo), el procesador XML no debería intentar interpretarlo como si fue- ra texto XML.
  • 12. 12 HELP400 Suplemento Técnico Este tipo de entidades siempre son generales y externas. <!ENTITY logo SYSTEM "http://www.miservidor.com/logo.gif"> Entidades parámetro internas y externas. Se denominan entidades parámetro a aquellas que sólo pueden utilizarse en la DTD, y no en el documen- to XML. Se pueden utilizar para agrupar ciertos elementos del DTD que se repitan mucho. Se diferencian las entidades parámetro de las generales, en que para hacer referencia a ellas, se usa el símbolo “ % ” en lugar de “ & ” tanto como para declararlas como para usarlas. <!DOCTYPE texto[ <!ENTITY % elemento-alf "<!ELEMENT ALF (#PCDATA)>"> ... %elemento-alf; ]> Tambien puede ser externa: <!DOCTYPE texto[ <!ENTITY % elemento-alf SYSTEM «alf.ent»> ... %elemento-alf; ]> Ejemplo de DTD Un ejemplo de DTD que puede servir para resumir todo lo visto hasta ahora podría definrnos un lenguaje de marcado para una base de datos de personas con direcciones e-mail. El fichero LISTIN.DTD podría ser algo así: <?xml encoding="UTF-8"?> <!ELEMENT listin (persona)+> <!ELEMENT persona (nombre, email*, relacion?)> <!ATTLIST persona id ID #REQUIRED> <!ATTLIST persona sexo (hombre | mujer) #IMPLIED> <!ELEMENT nombre (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT relacion EMPTY> <!ATTLIST relacion amigo-de IDREFS #IMPLIED enemigo-de IDREFS #IMPLIED> Par finalizar, y basándonos en este DTD, podríamos escribir nuestro primer listín en XML: <?xml version="1.0"?> <!DOCTYPE listin SYSTEM "LISTIN.DTD"> <listin> <persona sexo="hombre" id="ricky"> <nombre>Ricky Martin</nombre> <email>ricky@puerto-rico.com</email> <relacion amigo-de="laetitia"/> </persona> <persona sexo="mujer" id="laetitia"> <nombre>Laetitia Casta</nombre> <email>castal@micasa.com</email> </persona> </listin> q Alfredo Reino es informático profesional y posee las certificaciones MCSE y MCSA de Microsoft y CCNA de Cisco. Su página web la hallarás en http://www.areino.com