XML y las Especificaciones Relacionadas
Ahora que ya tenemos un entendimiento básico de XML, tiene sentido ver una
introdución de alto nivel de los distintos acrónimos relacionados con XML y
qué significan. Hay mucho trabajo alrededor del XML, por eso hay mucho que
aprender.
Los APIs actuales para acceder a documentos XML tanto serialmente como en
modo de acceso aleatorio son, respectivamente
SAX y
DOM.
Las especificaciones para asegurarnos la validez de los documentos XML son
DTD
(El mecanismo original, definido como parte de la especificación XML) y varios
esquemas
propuestos (nuevos mecanismos que usan síntaxis XML para hacer el trabajo de
describir los criterios de validación). Otras futuras características
estándards que estan cerca de completarse incluyen el estándard
XSL
-- un mecanismo para configurar traduciones de documentos XML (por ejemplo a
HTML u otro XML) y para dictar cómo se mostrarán los documentos. Otro esfuerzo
cerca de terminarse es la especificación del "Lenguaje de Enlaces
XML" (XLL), que permite los enlaces entre documentos
XML.
Estas han sido las mayores iniciativas con las que querremos familiarizarnos.
Esta sección también descubre otras proposiciones interesantes, incluyendo el
estándard de aspecto HTML, XHTML, y el meta-estándard
para describir la información que contienen los documentos XML,
RDF.
También cubre la iniciativa de Espacios de Nombrado
XML que promueve la reutilización modular de los documentos XML evitando la
colisión de nombres.
Varios de los esquemas XML propuestos también se
cubren aquí, junto con unos nuevos esfuerzos por usar XML para control remoto
de escritorios (DMTF) y servidores de documentos
(WebDAV).
Finalmente, hay un número de interesantes estándars y proposiciones de
estándards que se construyen sobre XML, incluyendo el "Lenguaje
Sincronizado de Integración Multimedia" (SMIL),
"Lenguaje de Marcas Matemático" (MathML),
"Gráficos de Vector Escalables" (SVG), y
DrawML.
El resto de esta sección nos ofrece una descripción más detallada de estas
iniciativas. Para hacer la cosa más sencilla está dividida en.
Ojearemos los términos una vez, para que sepamos que hay aquí, y
mantendremos cerca una copia de este documento para poder referirnos a ella
siempre que veamos uno de estos términos en algo que estemos leyendo. Muy
pronto, nos habremos aprendido todos estos términos, y podremos
"conversar" sobre XML!
Recomendaciones W3C
Las "Recomendaciones" W3C son, en realidad, la forma final de las
especificaciones generadas por el W3C. Es una "recomendación", porque
no se imponen a nadie, pero no es porque la especificación estuviera habierta
para posteriores discusiones y revisiones. El caso está cerrado. Esta es la
especificación que implementaremos para conformar el estándard.
SAX - API sencillo para XML
Este API era realmente un producto de colaboración de la lista de correo
XML-DEV, en vez de un producto del W3C. Se ha incluido aquí porque tiene las
mismas características "finales" que una recomendación de W3C.
También podemos pensar en este estándard como el protocolo de "acceso
serie" para XML. Este es el mecanismo más rápido de ejecutar que usaremos
para leer y escribir datos XML en un servidor, por ejemplo. También es llamado
un protocolo dirigido por eventos, porque la técnica para registrar nuestro
manejador con un analizador SAX, después de que el analizador invoque nuestros
métodos de retrollamada siempre que vea una nueva etiqueta XML (o encuentre un
error, o quiera decirnos algo más).
Para más información sobre el
protocolo SAX, puedes ver Escribir
un Sencillo Fichero XML.
DOM - Modelo de Objeto de Documento
Este protocolo convierte un documento XML en una colección de objetos en
nuestro programa. Entonces podemos manipular el modelo del objeto de cualquier
forma que tenga sentido. Este mecanismo también es conocido como el protocolo
de "acceso aleatorio", porque podemos visitar cualquier parte de los
datos en cualquier momento. Podemos modificar los datos, eliminarlos, o insertar
nuevos datos. Para más información sobre la especificación DOM, puedes ver
Manipular
Contenidos de Documentos con el Modelo de Objeto de Documento.
DTD - Definición de Tipo de Documento
La especificación DTD realmente forma parte de la especificación XML, en vez
de ser una entidad separada. Por otro lado, es opcional -- podemos escribir un
documento XML sin él. Y hay un número de proposiones de
esquemas
que ofrecen alternativas más flexibles. Por eso la tratamos aquí como si fuera
una especificación separada.
Un DTD especifica los tipos de etiquetas que se pueden incluir en nuestro
documento XML, y la preparación de dichas etiquetas. Podemos usar el DTD para
asegurarnos de que no creamos una estructura XML inválida. También podemos
usarlo para asegurarnos de que la estructura XML que estamos leyendo (o que va a
ser enviada por la red) es de echo válida.
Desafortunadamente, es dificil especificar un DTD para un documento complejo
de forma que evite todas las combinaciones inválidas y permita las válidas.
Por eso construir un DTD es como un arte. El DTD puede existir en el inicio del
documento, como parte del prólogo.
También puede existir como una entidad
separada, o puede ser dividido entre el prólogo del documento y una o más
entidades adicionales.
Sin embargo, mientras que el mecanismo DTD fue el primer método para
especificar una estructura válida de documento, no fue el último. Se han
inventando nuevos esquemas de especificaciones. Aprenderemos sobre ellos en un
momento. Para más información puedes ver Definir
un Tipo de Documento.
RDF - Marco de Descripción de Recursos
RDF es un estándard propuesto para definir datos sobre datos. Usado en
conjunción con la especificación XHTML, por ejemplo, o con páginas HTML, RDF
podría ser usado para describir el contenido de las páginas. Por ejemplo, si
nuestro navegador almacena nuestra información de ID como
FIRSTNAME, LASTNAME,
y EMAIL, una descripción RDF podría hacer posible transferir datos a
una aplicación que quisiera NAME y EMAILADDRESS.
Piensalo! algún día podríamos no tener que teclear nuestro nombre y dirección en cada web
site que visitemos! Para ver la última información sobre RDF, puedes ver la
página http://www.w3.org/TR/PR-rdf-syntax/.
Espacios de Nombres
El Espacio de Nombres estándard nos permite escribir documentos XML que usen
dos o más conjuntos de etiquetas XML de una forma modular. Supongamos por
ejemplo que hemos creado una lista de respuestos basada en XML que usa
descripciones XML de la partes suministradas por otros fabricantes (online!). El
dato "precio", suministrado para los subcomponentes podrían ser
cantidades que quisieramos totalizar, mientras que el dato "precio" de
la estructura en su totalidad podría ser algo que quisieramos mostrar. La
especificación de espacio de nombres define mecanismos para cualificar los
nombres para poder eliminar las ambiguedades. Esto nos permite escribir
programas que usen información de otras fuentes y hagan cosas correctas con
ella. La última información sobre espacios de nombres puede encontrarse en la
página http://www.w3.org/TR/REC-xml-names.
Recomendaciones Propuestas por W3C
Una "recomedación propuesta" por W3C es una proposición para una
recomendación W3C no-muy-finalizada-pero-probablemente-cerrada. Todavía está
abierta para revisión, y podría verse algún cambio si la realidad fuerza a
ello. Pero muchos pensamientos se han puesto en la proposición por mucha gente,
por eso es bastante bueno pensar como un estándard en su categoría que se
cumplirá sin muchos cambios.
Esquema RDF
La proposición de esquema RDF permite la especificación de reglas de
consistencia e información adicional que describe cómo deberían interpretarse
las sentencias en un "Marco de Descripción de Recursos" (RDF). Para
más información sobre la recomendación del esquema RDF, puedes ver la página
http://www.w3.org/TR/PR-rdf-schema.
Borradores de Trabajo W3C
Un borrador de trabajo W3C es una primera visión razonable de los que podría
ser enventualmente un estándard. Tiene sentido conceptualmente, y está listo
para que la gente empiece su implementación. La retroalimentación de que se
están desarrollando los esfuerzos para poner el estándard en práctica puede
ser el causante de algún cambio en los detalles internos, pero no de la
especificación general.
XSL - Lenguaje de Hoja de Estilo Extensible
El estándard XML especifica cómo identificar datos, no cómo mostrarlos. Por
otro lado, HTML dice como se deberían mostrar las cosas sin identificar que
son. El estándard XSL es esencialmente un mecanismo de tradución que nos
permite especificar a qué convertir una etiqueta XML para que pueda ser
mostrada, por ejemplo, en HTML. Se pueden usar diferentes formatos de XSL para
mostrar los mismos datos de formas diferentes para diferentes usos.
La parte de la tradución del XSL está bastante completada, y ya existe un
buen número de implementaciones. Sin embargo, la segunda parte del XSL está un
poco más ténue. Esta parte que cubre el formateo de objetos , también
conocida como flujo de objetos, que nos da la habilidad de definir
múltiples áreas en una páginas y luego enlazarlas juntas. Cuando una canal de
texto es dirigido como una colección, primero rellena el primer área y luego
"fluye" a la segunda cuando la primera está llena. Dichos objetos se
usan para cartas, catálogos, y publicaciones periódicas. El último trabajo
de W3c sobre XSL está en http://www.w3.org/TR/WD-xsl.
XLL - Lenguaje de Enlaces XML
El protocolo XLL consiste en dos especificaciones propuestas para manejar
enlaces entre documentos XML: XLink y XPointer. Estas especificaciones están
todavía en sus estados preliminares, pero es seguro que tendrán un gran
impacto sobre cómo se usarán los documentos XML.
XLink: El protocolo XLink es una especificación
propuesta para manejar enlaces entre documentos XML. Esta especificación
permite algunos enlaces muy sofisticados, incluyendo enlaces de dos sentidos,
enlaces a múltiples documentos, enlaces "expandibles" que insertan la
información enlazada dentro de nuestros documentos en vez de reemplazar nuestro
documento con una nueva página, enlaces entre dos documentos que han sido
creados por terceros, documentos independientes, y enlaces indirectos (por eso
podemos apuntar a un "libro de direcciones", en vez de directamente al
documento fuente -- actualizar el libro de direcciones modificará
automáticamente cualquier enlace que lo use). Para más información sobre la
especifiación XLink, puedes ver la página
http://www.w3.org/TR/WD-xml-link.
XPointer: En general, la especificación XLink
apunta a un documento o un segmento de documento usando sus ID. La
especificación XPointer define mecanismos para "direccionar dentro de
estructuras internas de documentos XML", sin requerir que el autor del
documento tenga que definir una ID para ese segmento. Para acotar la
especificación, proporciona "referencias para elementos, cadenas de
caracteres, y otras partes de documentos XML, tanto si tienen o no tienen un
atributo ID explícito". Para ver la última especificación XPointer,
puedes ver http://www.w3.org/TR/WD-xptr.
XHTML
La especificación XHTML es una forma de hacer documentos XML que se parezca y
actúen como documentos HTML. Como un documento XML puede contener cualquier
etiqueta que querramos definir, ¿por qué no definir un conjunto de etiquetas
que se parezcan a las de HTML? Este es el pensamiento que hay detrás de la
especificación XHTML. El resultado de esta especificación es un documento que
puede mostrarse en navegadores y también tratado como datos XML. Los datos
podrían no ser tan identificables como un XML "puro", pero serían
mucho más fácil de manipular que el estándard HTML, porque XML especifica un
tratamiento más regular y consistente.
Por ejemplo, cada etiqueta
de un documento XML bien-formateado debe tener una
etiqueta final asociada, o debe terminar en />. Por eso podríamos ver
<p>...</p>, o <p/>,
pero nunca veríamos <p>
en solitario. El resultado de este requerimiento es que nunca tenemos que
programar para los casos extraños que vemos en HTML donde, por ejemplo, una
etiqueta <dt> podría ser terminada por
</dt>, por
otra <dt>, por <dd>, o por
</dl>. Esto hace más fácil la escritura de código!
La especificación XHTML es una reformulación del HTML 4.0 dentro de XML. La
última información está en
http://www.w3.org/TR/WD-html-in-xml/.
Esquema XML
Esta especificación está construida sobre las proposiciones de esquemas
descritas abajo. Define tipos de elementos que un documento puede contener, sus
relaciones, y los datos que puden contener en formas que van más allá de lo
que proporciona la especificación DTD
actual. Para más información sobre la proposición del esquema XML, puedes ver
las especificaciones de W3C XML
Schema (Structures) y XML Schema
(Datatypes).
"Notas" W3C
Las "Notas" no son estándards W3C en absoluto. En su lugar, se han
hecho proposiciones por varios individuos y grupos que cubren tópicos que
están bajo consideración. El W3C las publica para que la gente que está
ocupada trabajando en los estándards y las revisiones tengan alguna idea de por
donde empezar. Una "nota" no es más que el reflejo de un estándard
eventual que cualquier otra -- cada una será juzgada por sus méritos, los
mejores resultados serán combinados en el borrador W3C.
Esquemas Propuestos
Aunque DTD nos permite validar documentos XML, debe sufrir un gran número de
deficiencias. Muchos de los problemas vienen del hecho de que la especificación
DTD no es hereditaria. Por ejemplo, para una dirección de correo que contenga
varios elementos "parsed character data" (PCDATA), el DTD se
parecería a esto.
<!ELEMENT mailAddress (name, address, zipcode)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT zipcode (#PCDATA)>
Como podemos ver, las especifiaciones son líneales. No hay sentido en el
contenido, que puede rellenar el espacio de nombrado, forzándonos a poner
nuevos nombres a elementos similares en diferentes configuraciones. Por eso, si
queremos añadir otro elemento "name" al DTD que contiene los
elementos firstName, middleInitial,
y lastName, tendríamos
que poner otro indentificador. No podríamos llamarlo simplemente
"name" sin conflictos con el elemento name definido para usarlo
en mailAddress.
Otro problema de la naturaleza no hereditaria de las especificaciones DTD es
que no clarifica qué comentarios están hechos para explicar. Un comentario al
principio como <!-- Address used for mailing via the postal system -->
podría aplicarse a todos los elementos que constituyen la dirección de e-mail.
Pero un comentario como <!-- Addressee --> sólo se aplicaría al
elemento name. Por otro lado, un comentario como <!-- A 5-digit
string --> se aplicaría especialmente a la parte #PCDATA del
elemento zipcode, para escribir los formatos válidos. Finalmente, los
DTDs no permite formalizar criterios de validación de caposm como es la
limitación 5-digit (o 5 y 4) para el campo zipcode.
Para remediar estas deficiencias, se han hecho varias proposiciones para un
esquemas hereditario que se parece más a una base de datos y que especifica
criterios de validación.
DDML / Xschema - Document Definition Markup Language / XSchema
Es bueno tener definiciones de documentos como DTD, pero un DTD tiene una
síntaxis algo extraña. DDML es el nuevo nombre para la vieja proposición
XSchema, que especifica restricciones de validación para un documento XML
usando XML. DDML es una de las muchas proposiciones que pretende ser el sucesor
del DTD. No está claro todavía cual será el estándard de validación. Para
más información sobre DDML, puedes ver la página
http://www.w3.org/TR/NOTE-ddml.
DCD - Descripción de Contenido de Documento
La proposición DCD es un mecanismo para definir un estándard XML para bases de
datos. Para más información sobre DCD, puedes ver la página
http://www.w3.org/TR/NOTE-dcd.
SOX - Esquema de XML Orientado a Objeto
SOX es una proposición de esquema que incluye tipos de datos extensibles,
espacios de nombres, y documentación embebida. Para más información sobre
SOX, puedes ver la página
http://www.w3.org/TR/NOTE-SOX.
Otras Notas W3C
Otras proposiciones para estándards basadas en XML, incluyen.
ICE - Intercambio de Información y Contenido
ICE es un protocolo para el uso de indicadores de contenidos y sus
subcriptores. Se enfoca sobre el "Intercambio de contenidos automático y
su reutilización, tanto en contexto de publicaciones tradicionales y en
relaciones negocio-a-negocio". Para más información sobre ICE, puedes ver
la página
http://www.w3.org/TR/NOTE-ice.
Estándards que Construyen XML
Los siguientes estándards y proposiciones construyen XML. Como XML es
básicamente un herramienta de definición de lenguaje, estas especificaciones
se usan para definir lenguajes estandarizados para propósitos especializados.
Estándards de Documentos Extendidos
SMIL - Lenguaje Sincronizado de Integración Multimedia
SMIL es una recomendación W3C que cubre audio, vídeo y animaciones. También
corrige el problema de la dificultad de sincronización del playback de dichos
elementos. Para más infomación sobre SMIL, puedes ver la página
http://www.w3.org/TR/REC-smil.
MathML - Lenguaje de Marcas Matemático
MathML es una recomendación de W3C que trata con la representación de
fórmulas matemáticas. Para más información sobre MathML, puedes ver la
página
http://www.w3.org/TR/REC-MathML.
SVG - Gráficos de Vector Escalables
SVG es un borrador de trabajo de W3C que cubre la representación de imágenes
gráficas de vectores. (Gráficos de vectores son imágenes construidas desde
comandos que dicen cosas como "dibuja una línea (cuadrado o círculo)
desde el punto x,y hasta el punto m,n" en vez de codificar la imagen como
una serie de bits. Dichas imágenes son más fácilmente escalables, aunque
requieren más tiempo de procesamiento para dibujarlas). Para más información
sobre SVG, puedes ver la página
http://www.w3.org/TR/WD-SVG.
DrawML - Lenguaje de Meta Dibujo
DrawML es una nota W3C que cubre imágenes 2D para ilustraciones técnicas.
También corrige el problema de actualización y redefinición de dichas
imágenes. Para más información sobre DrawML, puedes ver la página
http://www.w3.org/TR/1998/NOTE-drawml-19981203.
Estándards eCommerce
cXML - XML Commerce
cXML es un estándard de
(www.rosettanet.org)
para configurar catálogos online interactivos para diferentes vendedores, donde
los precios y los productos ofrecidos son especificos de la compañia. Incluye
mecanismos para manejar pedidos de compra, cambios de pedidos, actualizaciones
de estado, y notificaciones de envío. Para más información sobre cXML, Puedes
ver la página
http://corp.ariba.com/News/AribaArchive/cxml.htm.
CBL - Librería de Negocio Comunes
CBL es una librería de elementos y definiciones de atributos mantenidos por
CommerceNet (www.commerce.net).
Para más informaicón sobre CBL y una variedad de otras inicitativas que
funcionan juntas para permitir las aplicacioens eCommerce, puedes ver la página
http://www.commerce.net/projects/currentprojects/eco/wg/eCo_Framework_Specifications.html
Estándards de Mantenimiento y Administración de Software
DMTF - Manejo Distribuido de Tareas Forzadas
El DMTF es un grupo que viene con estándards para administrar remotamente
equipos de escritorio. Están planeando usar XML para mantener catalogos de
dispositivos y sus descripciones, y para otras tareas de control remoto. Este
grupo no forma parte de W3C, pero sus actividades parecen haber progresado al
estado de borrador, por eso está listado aquí. Para más información sobre
está organización, puedes ver
http://www.dmtf.org/.
WebDAV - Autoría y Versionado Distribuido en la Web
WebDAV es un esfuerzo desde el IETF que usa XML para mentener servidores web.
Permite que el contenido sea creado, modificado, sobre una conexión HTTP. (El
IETF no está afiliado con el W3C, pero su "borrador estándard" es
aproximadamente equivalente a una "recomendación" W3C, y por eso se
incluye aquí). Para más información, puedes ver el grupo de trabajo
"webdav" en
http://www.ietf.org.