Categorías destacadas
programacion php    
Artículo
1
¡votar!

 El API JAXP


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.

Publicado por:
Ricard Lou Torrijos
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
Rafael Montoliu Peleja dice:

Me ha aclarado muchas ideas

08/05/2010, a las 20:06:02
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon