Manual XML

  • Upload
    stteban

  • View
    1.017

  • Download
    0

Embed Size (px)

Citation preview

TEMA 1. DEFINICIN, PROPSITO DEL ESTNDAR DE XML_________ 1 TEMA 2. HERRAMIENTAS XML ________________________________ 7 TEMA 3. EL DOCUMENTO XML _______________________________ 15 TEMA 4. DOCUMENT TYPE DEFINITION ________________________ 25 TEMA 5. XML SCHEMAS_____________________________________ 35 TEMA 6. PRESENTACIN DE DOCUMENTOS XML ________________ 45 TEMA 7. HIPERENLACES EN XML _____________________________ 57 TEMA 8. DOCUMENT OBJECT MODEL _________________________ 65 A. GLOSARIO________________________________________________ 79 B. BIBLIOGRAFA ____________________________________________ 81

Tema 1

DEFINICIN, PROPSITO DEL ESTANDAR DE XML

1.1. DEFINICIN __________________________________________________ 3 1.2. ORIGEN _____________________________________________________ 3 1.3. MBITO DE APLICACIN _______________________________________ 3 1.4. VENTAJAS Y DESVENTAJAS ____________________________________ 3

-1-

1.1. DEFINICIN El eXtensible Markup Language es lo que se denomina un metalenguaje. Una sintaxis que nos permite definir lenguajes de marcas para usos concretos. Permite por tanto, que el usuario pueda crear sus propias etiquetas y que ste les d un significado que necesite, siempre y cuando tengan un significado coherente y sigan las reglas adecuadas, a diferencia de HTML que slo permite utilizar las etiquetas limitadas de las que dispone.

1.2. ORIGEN XML proviene de SGML, un estndar ISO con mayor potencia, pero tambin ms difcil y no orientado a Internet. XML hereda todas las ventajas de SGML, pero simplificndolo y orientndolo a Internet. Debemos tener claro que XML no es HTML mejorado, aunque ambos procedan del mismo lenguaje (SGML), pues persiguen objetivos muy diferenciados. XML describe datos, informacin; HTML la presenta.

1.3. MBITO DE APLICACIN Ya que el propsito de XML es el de dar una estructura concreta a la informacin de manera que sta se pueda intercambiar sin lmites o barreras, su utilizacin tiene como destino cualquier lugar donde se den numerosas situaciones de intercambio de informacin. La principal funcin de Internet es intercambiar todo tipo de informacin, es aqu por tanto donde se centra principalmente el uso de XML. Sin embargo, podemos encontrar su uso en telefona mvil (WAP-WML), proyectos para compiladores, etc.

1.4. VENTAJAS Y DESVENTAJAS DE XML. El xito de XML se debe principalmente a sus numerosas ventajas, de las que se enumeran las principales: Simple. XML implica un bajo grado de dificultad, con lo que se elimina el lmite principal de su predecesor, SGML. Orientado a Internet. Como se dijo anteriormente, es el lugar donde mayor intercambio de informacin se da.

-3-

-

Autodescripcin de los datos. La capacidad de crear nuestro propio lenguaje de marcas y su capacidad para describir los datos de una informacin, hace que sea muy fcil reconocer y comprender la informacin contenida en un documento XML.

-

Portabilidad. Elimina cualquier lmite impuesto por sistemas operativos, plataformas, etc. Extensible. Podemos crear nuestras propias marcas o etiquetas. Separa la informacin de su presentacin.

Sin embargo y a pesar de estas ventajas, tambin tiene tambin alguna desventaja. La principal aparece en casos concretos como el tratamiento de documentos multimedia, como vdeos, sonido, etc. Pongamos por caso un fichero de vdeo que ha de transmitirse a travs de Internet, en formato XML, para evitar incompatibilidades entre aplicaciones diferentes, que utilizan ese fichero. El vdeo en cuestin debera codificarse en XML, dando lugar a un documento bastante extenso, pues ste estara formado por entero de texto plano. El documento XML al ser tan extenso y transmitirse ste por Internet, ocupara mucho tiempo y ancho de banda en su transmisin.

SGML -Potente. -Independiente. -Flexible. -Abstrae informacin. -Difcil y poco orientado a Internet.

XML - Simple. - Independiente. - Flexible. - Abstrae informacin. - Autodescriptivo. - Orientado a Internet. - Orientado a objetos. - Comunicacin entre mquinas.

HTML - Extremadamente simple. - Totalmente orientado a Internet. - Muy rgido. - Mezcla informacin con presentacin. - Comunicacin entre personas.

Figura 1. Esquema que muestra las caractersticas principales entre SGML, XML y HTML, sus diferencias y la interdependencia entre cada uno.

-4-

RECUERDE

-

XML no es una versin mejorada de HTML, sino que se trata de un subconjunto de SGML que permite a los usuarios poder crear su propio lenguaje de marcas.

-

Su utilizacin no solo se centra en intercambiar informacin a travs de Internet, sino que puede emplearse en otras reas como la telefona mvil.

-

Es totalmente independiente del software, sistemas operativos, plataformas, etc.

-5-

Tema 2

HERRAMIENTAS XML

2.1. INTRODUCCIN _______________________________________________ 9 2.2. NAVEGADORES _______________________________________________ 9 2.3. PARSERS ____________________________________________________ 9 2.4. EDITORES __________________________________________________ 10 2.5. PROCESADORES_____________________________________________ 11

2.1. INTRODUCCIN Trabajar con XML implica el uso de diversas herramientas que ayudan en el proceso de trabajo o bien hacen posible realizar ciertas acciones propias del tratamiento de documentos XML. Al ser estos documentos de texto plano, un simple editor de textos para crear los documentos, junto con un procesador (parser) que los analice, pasan por ser las herramientas bsicas. El conocido Bloc de Notas de Windows y el parser MSXML de Microsoft suministrado junto al navegador Internet Explorer desde la versin 5.0, nos permitira comenzar a trabajar con XML sin coste econmico alguno. Sin embargo, para lograr un rendimiento ptimo al utilizar XML, se hace necesario el uso de diferentes herramientas que pueden ser gratuitas o comerciales. A continuacin se clasifican las diferentes herramientas ms conocidas.

2.2. NAVEGADORES Puesto XML tiene como objetivo principal Internet y su trabajo en la Web, los navegadores de pginas web, aparecen como herramientas imprescindibles si queremos ver la presentacin de un documento XML en su formato web. Actualmente, XML se ha extendido bastante y contina hacindolo, por lo que prcticamente cualquier navegador conocido hoy da, es capaz de presentar informacin en formato XML. El ms extendido de todos ellos es el Microsoft Internet Explorer, que ha pesar de haber creado sus propias particularidades en cuanto a XML, cada da se acerca ms al estndar propuesto por el W3C. Otros posibilidades pasan por Netscape Navigator, Mozilla y pera. Cada navegador tiene sus propias particularidades, a pesar de su acercamiento continuo al estndar, y a veces nos podemos encontrar con alguna que otra sorpresa al presentar los datos, existiendo la posibilidad, de que entre un navegador de un tipo u otro, halla alguna diferencia en la presentacin. La mejor posibilidad es utilizar los dos ms empleados: Internet Explorer o Netscape Navigator, sugiriendo el primero principalmente pues es el ms empleado.

2.3. PARSERS Para trabajar con XML, se hace imprescindible algn software que permita el anlisis de cualquier documento creado con este formato, para as verificar que sigue las reglas establecidas por XML, que la construccin del documento es correcta, etc. De esta forma, aseguramos que el documento analizado es correcto para su utilizacin. Este software es lo que se llama un parser.

-9-

Existen muchos, algunos orientados a la utilizacin de un lenguaje concreto de programacin, aunque es de gran utilizacin el incluido con el navegador de Microsoft, como anteriormente se comentaba. La seleccin del parser ms adecuado para nuestro trabajo, pasa por tener en cuenta dos factores. El primero es la velocidad de proceso a la que acta. A medida que aumenta el tamao y complejidad de los documentos XML que se procesen, la velocidad se convierte en una pieza clave para el buen rendimiento de nuestra aplicacin. El segundo factor a tener en cuenta es la conformidad del parser con respecto al estndar del W3C. La eleccin depender por tanto, de las necesidades reales de cada desarrollador, aunque un equilibrio entre las dos, sera normalmente lo ms adecuado. A lo hora de elegir, sera recomendable tambin, que el parser fuera capaz de analizar cualquier documento XML con respecto a un DTD o un XSchema (que se ver ms adelante), dada la importancia de stos en la actualidad. En la siguiente lista, aparecen los ms conocidos: o Microsoft MSXML. Cumple con los estndares establecidos por el W3C y es el ms extendido en la actualidad. Se instala junto al navegador Internet Explorer o bien se puede bajar la ltima versin que viene integrada junto al MSMXL SDK, desde la pgina de Microsoft. o Xerces. Forma parte del Apache XML Project. Se encuentra disponible para Java, C++, Perl y COM, con lo que es compatible con parser MSXML de Microsoft. Cumple con los estndares establecidos actualmente, pudiendo trabajar con DTD y XSchema. Es muy utilizado en entornos de desarrollo Java. o Crimson. Alternativa al Xerces, y de caractersticas similares, aunque se encuentra totalmente orientado para el desarrollo con Java. Es una donacin de Sun al Apache XML Project. o XP. Est orientado totalmente para trabajar con proyectos Java. Ofrece una alta velocidad de proceso y cumple con los estndares establecidos, pero no es validante: no puede trabajar con DTD o XSchema. o Oracle XDK. Totalmente orientado al desarrollo con Oracle que ofrece diversos componentes para su utilizacin con Java, C y C++. Cumple con los estndares, pero su principal pega es que es comercial.

2.4. EDITORES La composicin de los diferentes documentos XML se puede realizar con cualquier editor de textos normal. Esto sin embargo, conlleva el crear manualmente todos y cada uno de los detalles que formen el

- 10 -

documento. Por tal razn, un editor XML es lo ms conveniente, pues nos permitir olvidarnos en cierta medida, de detalles. Suelen utilizar algn parser, para advertir de los posibles errores que pudiera haber en el documento, colorear el cdigo para facilitar su lectura, etc. Algunos trabajan ofreciendo un esquema grfico en rbol, de la estructura jerrquica del documento, que obviamente favorece su comprensin, pero no permiten la edicin directa del texto. Los ideales son aquellos que ofrecen todo lo comentado y que son mixtos, ofreciendo edicin mediante el mencionado esquema en rbol y acceso directo a texto y adems permitan validar los documentos creados contra DTD o XSchema. An as, un editor de textos normal, es el indicado para que comience su formacin en XML, pues obligar a trabajar manualmente todos los aspectos, y posteriormente, una vez familiarizado con la sintaxis de XML, utilizar los especficos. Veamos una lista de ellos: o Microsoft XML Notepad. Apoyado lgicamente en el parser MSXML, se trata de un editor muy bsico. Ofrece una edicin grfica en forma de rbol de los documentos, pero no permite mucho ms. o o o o EditML. Un completsimo editor de documentos XML que ofrece edicin mixta, generacin automtica de documentos y otras muchas utilidades. Emacs. Conocido editor de textos, sobre todo en entornos Unix/Linux, del que existen multitud de aadidos para trabajar con XML en prcticamente todas sus facetas. Visual XML. Desarrollado ntegramente en Java, es un sencillo programa que ofrece edicin mixta de los documentos y que tambin permite trabajar con DTD. XML Spy. Ms que un editor, es posiblemente el mejor entorno de desarrollo, ya que incluye prcticamente todo lo necesario para trabajar con XML. Es comercial.

2..5. PROCESADORES Los procesadores de XML son aquellas herramientas que tratan los documentos XML para su transformacin, normalmente a travs de XSL. Veamos: o Xalan. Tambin forma parte del Apache XML Project. Trabaja con el estndar de XSL. Se ofrece para Java y C++.

- 11 -

o o

XT. De los mismos autores que el parser XP. Trabaja con el estndar de XSL con un alto rendimiento. Saxon. Incluye un conjunto de herramientas de proceso, entre ellas, XSL, XQuery, etc.

Dada la amplia difusin de XML y las excelentes expectativas de futuro, se encuentran tambin otras herramientas, que son entornos completos de desarrollo que engloban prcticamente todas las herramientas vistas. Incluido dentro de los editores, se menciona a XML Spy, que como su explicacin indica, es la mejor herramienta de desarrollo para XML que existe actualmente.

- 12 -

RECUERDE

-

Para comenzar a trabajar con XML, slo es necesario un editor de texto y un parser. Los editores XML ofrecen gran ayuda al crear este tipo de documentos, indicndonos los errores cometidos, por ejemplo.

-

Actualmente el parser MSXML de Microsoft es el ms utilizado, por tanto, el ms recomendable de usar.

- 13 -

Tema 3

EL DOCUMENTO XML

3.1. OBJETOS DE UN DOCUMENTO XML _____________________________ 17 3.1.1. Instrucciones de proceso __________________________________ 17 3.1.2. Elementos______________________________________________ 17 3.1.3. Atributos _______________________________________________ 18 3.1.4. Secciones cdata _________________________________________ 18 3.1.5. Comentarios ____________________________________________ 19 3.1.6. Datos__________________________________________________ 19 3.2. ESTRUCTURA _______________________________________________ 20 3.2.1. Cabecera o prlogo ______________________________________ 20 3.2.2. Cuerpo ________________________________________________ 20 3.3. TIPOS DE DOCUMENTOS XML _______________________________ 21 3.3.1. Bien formados (well-formed) _______________________________ 21 3.3.2. Vlidos ________________________________________________ 22

- 15 -

3.1. OBJETOS DE UN DOCUMENTO XML Para poder crear la estructura propia de los documentos XML es necesario el uso de una serie de objetos que le son propios. La mayora de estos objetos se basan en las etiquetas o marcas que dan nombre al lenguaje. Una etiqueta queda definida por el conjunto de caracteres comprendido entre los parntesis angulares (smbolos menor y mayor que)... < identificador > .... donde identificador, es el nombre que posteriormente identificar a un objeto concreto, por ejemplo, las instrucciones de proceso o los elementos. 3.1.1. Instrucciones de proceso Las instrucciones de proceso son aquellos objetos existentes en los documentos XML cuya funcin es indicar ciertos aspectos o caractersticas sobre el documento. Una de estas instrucciones, comn a todos los documentos XML, es la declaracin de documento XML. La sintaxis propia de una instruccin de proceso, es la siguiente, ...

...donde identificador es el nombre de la instruccin de proceso; nombre1, nombre2, etc., son los parmetros o argumentos diferentes que pueda admitir cada instruccin. 3.1.2. Elementos Se trata de los objetos esenciales en un documento XML, la unidad bsica de datos que forma la estructura de la informacin contenida en el documento. Un elemento queda definido por una etiqueta de apertura y otra de cierre, tal como muestra el ejemplo: informacin del elemento Existen elementos especiales que no contienen ningn tipo de informacin englobada dentro del elemento (la informacin que representan se entiende por la sola presencia del elemento), llamados

- 17 -

elementos vacos. En este caso, la utilizacin de la etiqueta de apertura y cierre viene abreviada por el uso de una sola etiqueta que acta como apertura y cierre:

3.1.3. Atributos A veces la informacin a que hace referencia un elemento, contiene una serie de propiedades que indican ciertas caractersticas sobre esa informacin y que podran dar lugar a la creacin de ms elementos, lo que puede dar lugar a documentos XML con una cantidad excesiva de elementos en su estructura, que harn ilegibles los mismos. Para evitar esto, el W3C provee de un objeto que es totalmente dependiente de los elementos: los atributos. Los atributos aparecen siempre dentro de la etiqueta de apertura de un elemento al que pertenecen. Su sintaxis:

El nmero de atributos de un elemento, no est limitado a uno, sino a los que sean necesarios, aunque siempre tendremos en cuenta, evitar un uso excesivo de stos por elemento. 3.1.4. Secciones CDATA Las secciones CDATA nos permiten introducir informacin dentro del documento XML que aparecer como tal, no ser analizada por el parser. XML se reserva una serie de caracteres debido al uso que hace de stos, que no deben aparecer directamente como informacin o contenido de un elemento, ya que ocasionaran errores en el documento XML, al ser analizado por el parser. La siguiente tabla muestra esos caracteres especiales: Carcter & < > " ' Entidad predefinida & < > " '

- 18 -

La solucin a este problema, viene dada por la columna derecha de la anterior tabla. En cada lugar dentro del contenido de un elemento donde aparezcan alguno de estos caracteres especiales, se insertar la secuencia de caracteres correspondiente, especificada como entidad predefinida. Sin embargo, si nos encontramos que en esa informacin aparecen demasiados caracteres especiales, la tarea de sustituirlos por sus correspondientes entidades predefinidas se volver totalmente improductiva. Es aqu donde aparecen las secciones CDATA, ya que pueden contener cualquier texto (excepto la secuencia de caracteres: ]]>, que indica el final de una seccin) ya que no ser analizado por el parser. Una seccin CDATA queda construida siguiendo la siguiente sintaxis: ]]>

3.1.5. Comentarios Al igual que en otros lenguajes, los comentarios son bloques de texto que nunca sern analizados y/o procesados, quedando simplemente ignorados, y cuya nica utilidad es crear notas dentro de un documento XML para realizar aclaraciones, documentacin, etc. Se utiliza exactamente el mismo sistema que en HTML. Como se indica, cualquier carcter dentro del bloque de comentario ser ignorado, sin embargo, hemos de evitar el uso de la secuencia de caracteres que indica el fin del bloque:

3.1.6. Datos Como datos para un documento XML, ser toda aquella informacin de texto, comprendida como contenido dentro de un elemento (entre sus etiquetas de apertura y de cierre), que figure como valor de algn atributo o bien forme parte de una seccin CDATA. Es necesario tener claro esto, pues como contenido de un elemento, podemos encontrarnos con otros elementos. Esto cobra especial importancia al crear un DTD o un XSchema, donde se ha de tener claro los diferentes contenidos que puede tener un elemento.

- 19 -

3.2. ESTRUCTURA Todos los documentos XML tienen en comn una estructura general, que nada tiene que ver con la que guarden entre ellos los diferentes objetos que compongan cada documento. Esta estructura en comn se divide en dos partes bien diferenciadas. 3.2.1. Cabecera o prlogo La cabecera o prlogo de un documento XML es la seccin que aparece en primer lugar. En ella tiene siempre lugar la declaracin de XML, que es una instruccin de proceso que figurar en primer lugar en cada documento y que indica que el fichero de texto en el que figura es precisamente un documento XML, adems de otras propiedades que se ven a continuacin:

El atributo version, nicamente puede contener como valor actualmente, "1.0", ya que ste, indica la versin del estndar XML actual. Los otros atributos, opcionales, indican el cdigo de caracteres internacionales que usa el documento y si ste, est enlazado ("no") o no ("yes") con algn DTD, respectivamente. El prlogo de un documento XML puede contener tambin la declaracin de un DTD, como se ver en otro tema, o tambin otras instrucciones que permitirn enlazar con XSchemas o con hojas de estilo XSL, etc. 3.2.2. Cuerpo El cuerpo del documento XML es la seccin inmediata al prlogo o cabecera y que se identifica fcilmente porque es aqu donde se encuentra la etiqueta de apertura del llamado elemento raz. Este elemento especial, est siempre presente en un documento XML y solo puede existir uno por documento. Cualquier contenido, datos u otros elementos, quedarn encerrados entre la etiqueta de apertura del elemento raz y su correspondiente etiqueta de cierre:

- 20 -

Datos o contenido del subelemento1 Datos de subelemento1A Datos de subelemento2

3.3.TIPOS DE DOCUMENTOS XML Segn una serie de condiciones que cumplan los documentos XML, estos pueden considerarse de diferentes formas. 3.3.1. Bien formados (well-formed) Son considerados como documentos bien formados, todos aquellos que cumplen la llamada regla document, que establece en realidad una serie de condiciones para que un documento XML pueda ser considerado como tal. Esas condiciones, son las que se detallan a continuacin: o Todo elemento existente en un documento XML estar formado por una etiqueta de apertura y otra de cierre. Aquellos elementos llamados vacos que solo tienen una etiqueta, dispondrn una barra (/) al final de la etiqueta, antes del smbolo mayor que >, para cerrarla. o o Todos los valores de los atributos deben estar encerrados entre comillas dobles ("). Si hay una estructura jerrquica de elementos, la anidacin de unos en otros debe ser totalmente correcta, sin solaparse unos a otros. o No se puede incluir como contenido analizable por un parser, los caracteres especiales indicados en este mismo tema.

- 21 -

o

Los nombres de los elementos solo pueden comenzar por letras o el carcter de subrayado y solo pueden contener letras, nmeros, guiones, subrayados, dos puntos o puntos. Ningn nombre puede comenzar con "xml", que se reserva para futuras revisiones del estndar.

3.2.2. Vlidos Un documento XML vlido es aquel documento bien formado que se encuentra enlazado a un DTD o a un XSchema y que sigue correctamente las definiciones y estructura establecidos en los mismos. En los temas referentes a DTD y a XSchema, aparecern ejemplos de documentos XML vlidos.

- 22 -

RECUERDE

-

Todo documento XML est formado por una cabecera o prlogo y un cuerpo. Solo puede existir un elemento raz por documento, que englobar a todos los dems. Un documento bien formado cumple una serie de condiciones contenidas en la regla "document".

- 23 -

Tema 4

DOCUMENT TYPE DEFINITION

4.1. DEFINICIN _________________________________________________ 27 4.2. UTILIZACIN ________________________________________________ 27 4.3. ELEMENTOS ________________________________________________ 28 4.3.1. Conectores de grupo _____________________________________ 29 4.3.2. Indicadores de aparicin __________________________________ 29 4.4. ATRIBUTOS _________________________________________________ 30 4.5. ENTIDADES _________________________________________________ 31 4.6. EJEMPLO COMPLETO_________________________________________ 31

- 25 -

4.1. DEFINICIN El Document Type Definition o DTD es una secuencia de instrucciones de declaracin, que crean una estructura y unas propiedades concretas para un documento XML. Sera por tanto aqu, donde creamos nuestras propias etiquetas. HTML es una DTD creada a partir de SGML, de hecho, los DTD no son realmente propios de XML sino que se heredan de SGML. Como se ver ms adelante en los ejemplos, no siguen las reglas sintcticas de XML. Segn la DTD resida en un fichero XML o en otro distinto que sea necesario enlazar, nos encontramos con que un DTD puede ser externo o interno. 4.2. UTILIZACIN La instruccin que nos permite enlazar un DTD externo con un documento XML concreto, figurar en el prlogo de ste, siguiendo la siguiente sintaxis: ... El documento agenda.dtd contiene la definicin de los elementos, etc. La extensin .dtd no es obligatoria, pero se suele poner por convenio. En el caso de encontrarnos con un DTD definido dentro del propio documento XML la sintaxis, sera un tanto diferente: ...

- 27 -

4.3. ELEMENTOS Para declarar un elemento se utiliza la siguiente sintaxis:

En modelo_contenido indicamos precisamente el tipo de contenido que contendr el elemento que se est declarando. La siguiente tabla muestra las distintas posibilidades:TIPO CONTENIDO Se trata de un elemento vaco: EMPTY ... da lugar a... Es un tipo de contenido muy ambigo, ya que no se especifica realmente el tipo. Solo ANY suele utilizarse si no se tiene claro el contenido que tendr un elemento (por ejemplo, para futuros usos): Este tipo no tiene una palabra clave reservada para definirlo, y comprende aquellos elementos que como contenido, tienen datos y otros elementos. La declaracin del elemento, indica de forma implcita el contenido: ... da lugar a... Mixto Datos del elemento Datos del elemento Se trata de elementos que como contenido, nicamente tienen otros elementos: Otros elementos ... da lugar a... Texto #PCDATA Indica que el contenido de un elemento es son datos, texto, pero no se indica el tipo de dato (si es un entero, una fecha, etc.). DESCRIPCIN

- 28 -

4.3.1. Conectores de grupo Los conectores de grupo, son caracteres que se emplean cuando el modelo o tipo de contenido de un elemento es mixto o bien solo contiene otros elementos, para indicar la secuencia a seguir:CONECTOR ... da lugar a... ( ... ) Cualquiera. Solo permite utilizar un elemento de entre los ofrecidos en la secuencia: | ... da lugar a... , Indica el orden a seguir por los elementos de una secuencia. Vase la descripcin del conector parntesis (). Texto del elemento. DESCRIPCIN Los parntesis indican una secuencia:

4.3.2. Indicadores de aparicin Para indicar cuntas veces puede aparecer un elemento o secuencia de elementos se emplean unos caracteres llamados indicadores de aparicin:INDICADORES ? + * DESCRIPCIN El elemento o secuencia de elementos aparecer cero, o una sola vez. El elemento o secuencia de elementos aparecer una o ms veces. El elemento o secuencia de elementos aparecer cero, una, o ms veces.

- 29 -

4.4. ATRIBUTOS La declaracin de los atributos perteneciente a un elemento, se realiza creando una lista de atributos, aunque en la lista, tan solo figure la declaracin de uno de ellos: Ejemplos:

Los tipos de atributos que se pueden utilizar son:TIPO CDATA DESCRIPCIN Cualquier carcter: Este tipo acepta el nombre de una entidad general como valor: ENTITY ... puede dar lugar a ... ENTITIES Enumeracin Lista de entidades. No es un tipo como tal, sino que se asignan al atributo una serie de valores entre los que habr que elegir: ID IDREF IDREFS NMTOKEN NMTOKENS Valor nico en todo el documento XML, con las mismas restricciones que un NMTOKEN: Similar a ID. De hecho, ser un valor que har referencia a un atributo de tipo ID existente: Lista de IDREF. Cadena de texto con las mismas restricciones que tiene un nombre de elemento: Lista de NMTOKENS:

- 30 -

Podemos indicar asmismo si el valor de un atributo es requerido, etc., mediante unas palabras clave que se indicaran antes que el valor por defecto: #IMPLIED: El valor del atributo es opcional. #REQUIRED: Requerido siempre. Forzamos a que se deba introducir un valor para este atributo. #FIXED: Indica un valor fijo que no se podr cambiar. Ese valor lo indicaremos inmediatamente detrs, como valor por defecto.

4.5. ENTIDADES Las entidades se usan a modo de macros, pues en el lugar donde aparezca una, al analizarse el documento, esa entidad ser sustituida por el valor al que equivale. Dependiendo de ese valor al que sustituye y alguna que otra particularidad, podemos encontrarnos con: - Entidades generales: una simple sustitucin de texto. que dar lugar a la entidad &abc; - Entidades externas: se encuentran definidas en un documento externo. que ser - Entidades paramtricas: una simple sustitucin de texto, en un DTD. que ser &datos;

4.6. EJEMPLO COMPLETO El siguiente cdigo, representa el contenido de un ficticio documento XML, donde existe un DTD. El cdigo XML, responde en su totalidad a la DTD, es por tanto, un documento bien formado y vlido. Documento gestion.xml

- 31 -

]>

HIERROS S.A. Calle Nombre Numero &lt30; fundicin modelo1 500 20 MADERAS S.A. Calle Nombre Numero &lt90; panel modelo1 50 20 panel modelo2 100 10 - 32 -

RECUERDE

-

El DTD nos permitir crear nuestro propio lenguaje de marcas. Podremos crear cualquier objeto que pueda aparecer en un documento XML. Un documento XML que cumple a la perfeccin lo expuesto en un DTD es un documento vlido. No utilice solamente elementos, sino tambin atributos, para evitar un nmero excesivo de ellos que haga ilegible el documento.

- 33 -

Tema 5

XML SCHEMAS

5.1. DEFINICIN. COMPARATIVA DTD-SCHEMA________________________ 37 5.2. NAMESPACES _______________________________________________ 37 5.3. UTILIZACIN ________________________________________________ 38 5.4. ELEMENTOS ________________________________________________ 39 5.4.1. Contenidos _____________________________________________ 40 5.4.2. Secuencias _____________________________________________ 40 5.5. ATRIBUTOS _________________________________________________ 41 5.6. EJEMPLO COMPLETO_________________________________________ 42

- 35 -

5.1. DEFINICIN. COMPARATIVA DTD-SCHEMA A pesar de que mediante los DTD podemos crear nuestras propias etiquetas, stos tienen una serie de lmites. No podemos por ejemplo identificar los tipos de datos de manera concreta (es imposible indicar si estamos ante una fecha), como tampoco podemos indicar si el valor de un elemento tiene que oscilar entre un lmite mximo o mnimo, y a pesar de que podemos indicar las apariciones de un elemento, no nos permite indicar ese nmero de manera exacta. Al mismo tiempo, existe otro inconveniente en el uso de los DTD. Hemos de aprender una sintaxis diferente a XML para crearlos, debido a que stos provienen de SGML. Por todas estas razones Microsoft crea un sistema estndar propio para la creacin de etiquetas, donde en todo momento se trabaja con XML. El W3C, toma estas ideas y crea un sistema estndar: los XSchemas (XML Schemas).

5.2. NAMESPACES Existen multitud de DTD e igualmente el nmero de Schemas va aumentando. Existe una gran probabilidad de encontrarnos un documento XML enlazado a dos DTD, donde existan elementos con igual nombre y que sin embargo, estn definidos para un objetivo diferente. Si utilizamos el nombre de ese elemento, a cul de ellos nos estaremos refiriendo? Para evitar estos casos de ambigedad que pueden darse tambin en los atributos, se crean los llamados namespaces o espacios de nombre. Un namespace es un identificador, al cual se asigna un grupo de elementos o atributos, de tal manera, que al utilizar un elemento o atributo perteneciente a un namespace concreto, sea necesario utilizar ese identificador antes: Datos del elemento Gracias al identificador o prefijo xt, no habr confusiones con otros elementos que utilicen el mismo nombre. Para usar un prefijo habra que hacer exactamente lo mismo. Antes de utilizar un namespace, por supuesto hemos de declararlo: xmlns:prefijo = URL

- 37 -

La palabra clave xmlns, indica al procesador que analiza el documento, que estamos declarando un namespace, que no es ni ms ni menos que asignar a un prefijo, una URI. Realmente, no estamos apuntando a un recurso mediante la URI del namespace, sino que simplemente se utiliza para dar ms informacin al procesador, sobre el mismo y para evitar duplicar namespaces. Es necesario tener claro aqu, que el namespace no es el prefijo, sino la URI a la que se enlaza.

5.3. UTILIZACIN Puesto que un XSchema, no es ni ms ni menos que un documento XML con una serie de elementos, la forma de que un documento XML normal trabaje en base a un documento XSchema es enlazndolo de una manera particular, establecida por el estndar. Este enlace, se hara en el prlogo del documento XML que va a seguir al XSchema: . . . El nombre usado como prefijo (xsi) no es obligatorio, slo se indica por convenio. La URI que hace de namespace es obligatoria, pues indica el estndar del W3C. El atributo noNamespaceSchemaLocation indica la localizacin exacta del documento XSchema. Hay que hacer notar que el enlace al XSchema se realiza mediante la declaracin de un namespace en el elemento raz del documento. La creacin del documento XML que contiene al esquema pasa por un proceso similar: . . .

- 38 -

Ntese que se trata de un documento XML que utiliza elementos ya predefinidos para crear etiquetas. Hacer notar tambin que el elemento raz de un documento XSchema es schema. El prefijo xsd es tambin usado por convencin y se podra usar otro si se quisiera. Tambin por convencin, se utiliza como extensin al nombrar a un archivo XSchema ,con el mismo nombre que el prefijo: xsd.

5.4. ELEMENTOS La definicin de un elemento bastante simple en cuanto a su sintaxis, pero como se ver, ser necesario conocer y distinguir perfectamente los diferentes tipos de contenido que puede tener un elemento. La sintaxis es: Como tipos de datos tenemos una gran cantidad de ellos, los ms utilizados seran: - string: Una cadena de texto. - integer: Entero. - float: Flotante. - double: Flotante doble. - time: Horas, minutos, etc. - date: Fecha. - boolean: Lgico. Es necesario volver a mencionar que los tipos de datos que aqu aparecen son los principales, pero existen muchos ms, normalmente, derivaciones de los anteriores. El siguiente ejemplo muestra la declaracin de un elemento que utiliza como tipo de dato un nmero entero y un valor por defecto, gracias a default: O indicando un valor fijo que no podr cambiar, gracias al uso de fixed:

- 39 -

5.4.1. Contenidos Para crear XSchemas que sean funcionales, es necesario tener muy claro de que manera clasifica los elementos este sistema, y tambin que contenidos puede tener. Los tipos de elementos que pueden aparecer en un XSchema son: - Complejos. Aquellos elementos que como contenido contengan otros elementos o bien posean atributos. Figuran aqu elementos vacos con un atributo al menos, o elementos que contienen a su vez subelementos. - Simples. No poseen atributos y no pueden contener otros elementos. Se incluyen aqu los elementos vacos sin atributos y cualquier elemento cuyo contenido solo sean datos. Respecto a los tipos de contenidos, como se ha visto ms arriba, stos estn estrechamente ligados a cada tipo de elemento:Contenidos Con subelementos Datos Mixto S S Complejo S No Simple No S Vaco No No

5.4.2. Secuencias Todo elemento complejo con subelementos, debe indicar una secuencia a seguir por los diversos elementos que figuran como contenido. Para hacerlo se sigue una sintaxis como la del ejemplo:

- 40 -

El elemento indica el comienzo de la secuencia de subelementos y que debern aparecer exactamente en el mismo orden en que han sido designados. Aparece minOccurs, que indica el nmero mnimo de apariciones del elemento y maxOccurs, que indica el mximo.

5.5. ATRIBUTOS Mediante los siguientes ejemplos, se podr ver la forma de declarar un atributo junto a otras particularidades. En este primer ejemplo, declaramos un atributo con un valor por defecto: Si queremos que el atributo contenga siempre el mismo valor: Si pretendemos que el atributo sea opcional: Y finalmente si deseamos que sea requerido:

- 41 -

5.6. EJEMPLO COMPLETO Veamos un XSchema al completo. Documento ordenes.xsd Un documento XML que haga uso y siga correctamente las definiciones del XSchema del ejemplo, podra ser ste: John Smith Ola Nordmann Langgt 23 4000 Stavanger Norway

- 42 -

Empire Burlesque Special Edition 1 10.90 Hide your heart 1 9.90

- 43 -

RECUERDE A pesar de la relativa sencillez de creacin de DTD, a la larga es mejor utilizar XSchema, al obtenerse una mejor descripcin de los datos y utilizarse en todo momento XML, no SGML. Los namespaces o nombres de espacio no sealan una direccin fsica de un recurso, tan solo indica informacin para evitar ambigedades. Es importante a la hora de crear XSchemas, tener muy claro como clasifica los diferentes elementos que puedan crearse y sus tipos de contenidos.

-

- 44 -

Tema 6

PRESENTACIN DE DOCUMENTOS XML

6.1. CONTENIDO Y PRESENTACIN _________________________________ 47 6.2. CASCADE STYLESHEET (CSS) __________________________________ 47 6.3. XSL ________________________________________________________ 47 6.3.1. XPATH_________________________________________________ 47 6.3.2. XSLT __________________________________________________ 49 6.3.3. XSL-FO ________________________________________________ 52

- 45 -

6.1. CONTENIDO Y PRESENTACIN Toda la informacin contenida en un documento XML, con sus DTD o XSchemas, no nos servira de nada si no se pudiese presentar al usuario, de una manera ms comprensible, por muy autodescriptivas que sean las etiquetas que forman XML. Actualmente se utilizan dos sistemas para lograr este propsito, y tenemos la posibilidad de que la presentacin se haga en formato web, pdf, rtf, etc.

6.2. CASCADE STYLESHEET (CSS) Una primera posibilidad que nos permite presentar documentos XML en formato web, proviene de un sistema para mejorar HTML. Las CSS fue un estndar creado por el W3C como un primer intento de separar la informacin de su presentacin en web y que se puede utilizar tanto en HTML como en XML, aunque en ste ltimo se recomiende el uso de XSL, pues est especficamente creado para este lenguaje. La forma de enlazar un archivo CSS con un documento XML se realiza en el prlogo de ste, mediante la inclusin de una instruccin de proceso: El documento archivo.css contiene el cdigo CSS que formatea el documento XML para su presentacin en web y text/css, indica que el sistema usado para presentar la informacin es CSS.

6.3. XSL El eXtensible Stylesheet Language, es el sistema apropiado para formatear la informacin contenida en un documento XML para presentarlo en diversas formas, ya que deriva del propio XML y como se dijo, es especfico para l. Para realizar su labor, XSL se divide en tres subtecnologas.

6.3.1. xpath Para poder formatear y presentar la informacin existente en un documento XML, es necesario contar con una forma de acceder a los diferentes objetos que lo forman, y XPath es la tecnologa de XSL encargada de realizar esta tarea. La sintaxis utilizada por XPath para recorrer los documentos es muy similar a la- 47 -

usada por el sistema de ficheros de un ordenador, tratando cada archivo como un rbol jerrquico de objetos donde cada nivel es un nodo, que se puede seleccionar o nombrar para indicar la ruta a seguir que nos permita seleccionar un objeto concreto que puede ser un elemento o un atributo, o bien un grupo de ellos. XPath, como se ver ms adelante cuenta tambin con una serie de funciones que se pueden emplear tambin para potenciar el acceso a los objetos de un documento. Comencemos viendo como seleccionar la unidad bsica de un archivo XML, el elemento. - titulo , simplemente escribiendo el nombre, es posible seleccionar un elemento. Al no indicar una ruta a seguir, XPath intentar seleccionar todos aquellos elementos con ese nombre, a partir del objeto que en ese momento est seleccionado. Mediante la utilizacin de la barra invertida: / y la doble barra invertida //, conseguiremos crear diferentes tipos de ruta. Con la utilizacin de la barra simple sern rutas absolutas, mediante las cuales indicamos un camino concreto a seguir, para seleccionar un objeto. La utilizacin de la doble barra es una forma de crear rutas no absolutas, pues con su utilizacin, estamos indicando que para realizar la seleccin de un objeto se busque en absolutamente todo el documento. Veamos unos ejemplos: - /elemento_raiz , selecciona el elemento raz del documento. - /elemento_raiz/sub1 , selecciona todos los elementos sub1, que penden del raz. - /elemento_raiz/sub1/sub2 , selecciona todos los elementos sub2 de todos los elementos sub1. - //libro , selecciona todos los elementos libro que existan en el documento. Podemos usar caracteres especiales llamados comodines, como el asterisco, que equivale a cualquier elemento: - /*/mapas/andalucia , selecciona todos los elementos andalucia de todos los elementos mapas que tienen un ancestro o nivel superior de elementos, sea el que sea. - //* , selecciona absolutamente todos los elementos de un documento. Mediante la utilizacin de corchetes, podemos indicar condiciones a la hora de seleccionar elementos:

- 48 -

- /imagenes/mapas[1] , selecciona el primer elemento mapa contenido en imagenes. - /imagenes/mapas[last()] , selecciona el ltimo elemento mapa contenido en imagenes. - /imagenes/mapas[andalucia] , selecciona todos los elementos mapas de imagenes, que contienen al elemento andalucia. - /muebles/mesas[precio=30] , selecciona todos los elementos mesas que contienen elementos precio y cuyo contenido es 30. Hasta ahora hemos estado trabajando con una sola ruta, pero es posible que necesitemos indicar ms de una ruta. Para hacer esto se har uso de caracteres conectores, como es el caso del carcter tubera |. Sirvan los siguientes ejemplos: - //titulo | //autor , selecciona todos los elementos titulo y autor del documento. - //titulo | //autor | /libros/editorial[editorial='Libreros'] , selecciona todos los elementos titulo y autor del documento y todos los elementos editorial de libros, cuyo contenido sea Libreros. A la hora de seleccionar atributos, podemos actuar exactamente igual que con los elementos, salvo que antepondremos el carcter arroba (@) antes del nombre del atributo: - //@color , selecciona todos los atributos color del documento. - //fondo[@color] , selecciona todos los elementos fondo del documento que posean el atributo color. - /web/fondo[@*='opaco'] , selecciona todos los elementos fondo que estn dentro de web, que contengan atributos con el valor opaco. Otros ejemplos sobre XPath: - ./precio[@moneda] , selecciona todos los elementos precio que estn un nivel por debajo del elemento actualmente seleccionado y que posean un atributo moneda. - ../alquiler[1] , selecciona el primer elemento alquiler que dependan del nivel superior al actual. 6.3.2. xslt El eXtensible Stylesheet Language Transformations, es la parte de XSL encargada de realizar la transformacin de los objetos de un documento XML para su presentacin. Para lograr esto hace uso de unas plantillas que realizan una serie de operaciones sobre los objetos de un archivo XML. Cada plantilla,

- 49 -

acta en algn punto de un archivo XML, gracias a las rutas XPath, vistas en el punto anterior. Aquellas partes de un documento, que no sean utilizadas por una plantilla, quedarn tal cual, sin ningn tipo de transformacin. Estas plantillas se habrn creado en un archivo XML aparte, que nicamente contendr a estas, y cuya extensin tpica ser .xsl, por convencin. De esta manera, si queremos que un documento XSLT acte en un determinado fichero XML, habremos de proceder a enlazarlo, de una forma similar a como lo hacamos con los XSchemas, o ms parecido an con CSS en el prlogo, mediante una instruccin de proceso: Una vez visto como enlazar la hoja de estilo XSL, veamos como puede crearse. Esa labor se har tambin como si creramos un documento XML, ya que al fin y al cabo eso es precisamente. La sintaxis de creacin es como sigue: . . . Como dijimos, todo el documento est basado en plantillas y la sintaxis para crearlas es: ... Observamos el uso del elemento template, que define la plantilla y su atributo match, donde indicamos una ruta XPath, que seleccione el lugar donde se aplicar la citada plantilla. Puesto que todo en XML gira en torno a la informacin, para presentarla es necesario una forma de acceder a ella y es el elemento XSL encargado de ello:

- 50 -

Extrae el valor de un elemento seleccionado, resultado del proceso de la ruta XPath existente en el atributo select. El siguiente ejemplo, muestra un elemento que permite realizar un bucle, que recorra todos los elementos de un determinado nivel, con lo que podremos acceder de manera rpida al valor de cada elemento: El resultado de aplicar el anterior cdigo es que en la presentacin aparecern los valor de todos y cada uno de los elementos titulo y autor que se encuentren como subelementos de todos los elementos libro que halla por debajo de libros. Si quisiramos que el resultado apareciera ordenado alfabticamente por autor, utilizaramos lo siguiente: Si pretendisemos filtrar toda la anterior informacin de salida, haciendo que solo aparecieran los datos de los autores y ttulos de los libros con precio inferior a 20: Y si deseamos que ocurran cosas diferentes con ms de una condicin:

- 51 -

6.3.3. xsl-fo Se ha visto como seleccionar los objetos de un documento XML, como lograr presentarlos, queda por tanto estudiar su formato y de eso es lo que se encarga la tercera y ltima de las tecnologas que componen XSL. eXtensible Stylesheet Language Formatting Objects nos permite de manera similar a como lo hacan las CSS, dar formato a la informacin de salida de un documento XML, cuando se le aplica una transformacin por medio de XSLT. Podemos crear documentos de estilo XSLFO independientes, que despus se enlazarn con el archivo XML con el que trabajen o bien podemos incorporar el cdigo de XSLFO a un fichero XSLT, con lo que las instrucciones de transformacin, se mezclarn con las de formato. Si nos decidimos por la primera opcin, a la hora de nombrar el fichero XSLFO, por convencin, se utiliza como extensin .fo o bien .fob. La declaracin que indica que estamos ante un archivo de este tipo, se realiza de la siguiente manera: ...

- 52 -

Al tratarse al fin y al cabo de un documento XML, debe contener un elemento raz, que en este caso concreto ser siempre root. Respecto al trabajo que realiza en un archivo XML, se puede decir que se asimila a XSL pues trata cada documento, no por objetos, pero s por bloques, siendo el primero de ellos el que representa a todo el documento y por tanto el que define toda la configuracin general que se aplicar al proceso de formateo de la informacin para su presentacin: ... Como el documento se puede dividir en pginas, es necesario un elemento que identifique cada pgina, que dar lugar normalmente a una plantilla: El atributo master-name identifica de forma nica a cada plantilla de pgina. Hay que asegurarse por tanto, que ese nombre no se repita. Si se trata de formatear una parte o bloque, del contenido de una pgina, tendremos que usar un elemento ms que ir enlazado con una plantilla de pgina concreta. Este elemento se dispondr fuera de layout-master-set. Mediante el atributo master-reference de una de estas plantillas de pgina es posible enlazar con simple-page-master: Para la salida de los datos, XSLFO usa reas rectangulares donde se presentar cualquier tipo de informacin resultado. Estas reas guardan una jerarqua segn sea el tipo de cada rea: Pginas. Cualquier resultado de los datos que se presente, ser dividido en pginas. Ya se ha visto que elementos trabajan sobre las pginas. Regiones. Cada pgina estar dividida a su vez en regiones. Bloques. Las regiones se dividen en bloques. Lneas. Los bloques en lneas.

- 53 -

An existe otro tipo de rea ms, aunque sta se refiere al interior de las lneas, pues cada una de ellas, englobar a un carcter concreto de la lnea, un grfico, etc. Las pginas estn divididas en unas regiones fijas, que hacen referencia a reas tpicas de una pgina: - region-body , cuerpo de la pgina. - region-before , rea superior de la pgina, cabecera. - region-after , rea inferior, pie de pgina. - region-start , rea izquierda de la pgina. - region-end , rea izquierda de la pgina. El siguiente ejemplo muestra un fichero XSLFO que muestra la estructura a seguir y que al mismo tiempo indica que elementos se utilizan para indicar regiones, y las diferentes reas que dependen de las regiones:

- 54 -

Este es solamente un texto de prueba contenido en una regin, que asmismo contiene un texto anidado. Otro ejemplo de texto anidado y en negrilla como ste o en itlica como este otro..

Otra posibilidad de usar XSLFO es integrndolo directamente en un documento XSLT. El ejemplo que sigue muestra una forma usual de lograrlo:

- 55 -

RECUERDE CSS fue desarrollada para dotar a HTML de abstraccin de datos, separando stos de su presentacin, por tal motivo para XML se recomienda el uso de XSL. Con XSL podemos transformar un documento XML en otro que permita su presentacin en diferentes formatos. XSL utiliza a XPath, para recorrer cualquier documento XML; XSLT para acceder y gestionar los datos y XSLFO para darles un estilo de presentacin.

- 56 -

Tema 7

HIPERENLACES EN XML

7.1. VNCULOS Y PUNTEROS EN XML ________________________________ 60 7.2. XLL ________________________________________________________ 61 7.2.1. xlink___________________________________________________ 61 7.2.2. xpointer________________________________________________ 63

- 57 -

Quienes han utilizado la Web alguna vez, saben hasta qu punto es importante el hiperenlace. Sin embargo, no todo el mundo sabe que las nociones sobre hiperenlace de la Web son bastantes reducidas comparadas con los sistemas de hipertexto comerciales y acadmicos. XML por si solo no puede corregir esto, pero existen dos normas asociadas, XLink y XPointer, que dan un paso de gigante en la consecucin de un entorno de hipertexto ms avanzado que el utilizado por HTML. En el lenguaje de etiquetas HTML, colocamos un enlace utilizando la etiqueta ... y podemos enlazar a un nico documento o al interior de ste, siempre y cuando est marcado con la etiqueta .... En la especificacin XLink se describe como permitir el enlace entre documentos XML. Entre otras, nos permite: o o o o Utilizar cualquier elemento del XML como origen de enlace. Enlazar a ms de un documento. Crear enlaces fuera del documento. Definir el comportamiento del enlace, etc.

En la especificacin XPointer se define la sintaxis que nos permitir enlazar al interior de un documento XML. Con esta nueva norma, los enlaces ya no slo sern a elementos ya marcados sino que se permitirn enlaces a cualquier parte del documento, entre ellos: o o Enlaces a una palabra del documento que cumpla unas condiciones concretas. Enlaces a un prrafo concreto, etc.

No es posible tener hipertexto sin hipervnculos, y XML no podra funcionar en el mundo del WWW sin algn tipo de mecanismo de construccin de vnculos. Los hipervnculos de HTML son funcionales y han supuesto para los creadores de documentos un sistema fiable y estndar para hacer referencia a los trabajos de otros desde sus propios documentos. Sin embargo, los hipervnculos de HTML no explotan ni de lejos toda la capacidad de los hipervnculos. Por otro lado, los de XML son mucho ms extensibles, y un slo vnculo puede conectar cientos de documentos. En XML, disponemos de un sistema de vnculos denominado XLink y un mecanismo de referencia a elementos de un documento denominado XPointer. Junto con un conjunto de documentos escritos correctamente, XLink y XPointer llevan los vnculos a donde nunca nadie ha llegado.

- 59 -

7.1. VNCULOS Y PUNTEROS EN XML El sistema de vinculacin de XML es tan especializado y exhaustivo que posee dos especificaciones que describen su funcionamiento. La primera de ellas, XLink, detalla el modo en que los documentos XML deben conectarse entre s. Ya no existirn slo los hipervnculos de A a B, sino que se podr ir de A a B, luego a D, y de vuelta a A pasando por C, si le apetece. XLink tambin le permitir guardar descripciones de sus vnculos en un documento, facilitando su gestin y actualizacin. La segunda de las especificaciones que rigen los vnculos de XML, XPointer, especifica cmo puede un vnculo apuntar a un lugar especfico situado en el interior de un documento. Por tanto, XLink determina el documento al que se debe acceder, mientras que XPointer indica el lugar preciso dentro de ese documento. Combinados forman una potente herramienta para la creacin de vnculos entre documentos XML. El objetivo de los creadores de XML es integrar los documentos de XML con los de HTML, con ese fin, XLink es compatible con la etiqueta de HTML, y es lo suficientemente potente como para satisfacer las necesidades de XML. Con XLink es posible crear vnculos entre documentos descritos con ambos lenguajes, as como entre documentos exclusivamente de XML. Los vnculos de XML pueden incrustarse en un documento y seguirse del mismo modo que los vnculos estndar de HTML. El navegador, de acuerdo con la hoja de estilo asociada al documento, determinar cmo debe mostrar los vnculos al usuario. Dentro de poco tiempo, desaparecern los vnculos azules subrayados. Un usuario podr activar los vnculos XML normalmente haciendo clic sobre ellos. Todas estas caractersticas deberan resultarle familiares, pues tambin se aplican a los vnculos HTML. Por su parte, los vnculos de XML tambin pueden: o Acoplarse a cualquier elemento, y no slo a . De este modo se puede lograr una de las metas de XML; permitir a los diseadores de DTDs definir sus propios elementos de marcado. Cualquier elemento puede constituir un hipervnculo en XML. o Hacer referencia a un punto especfico de un documento XML conociendo su nombre o ciertas caractersticas especiales como su contexto o localizacin. Aqu es donde entra en juego XPointer. o Verse o procesarse de modos diferentes tal y como desee el creador de un documento. Tambin pueden activarse automticamente, en vez de confiar en que el usuario haga clic sobre el texto subrayado.

- 60 -

o

Describirse en un documento que en realidad no forma parte del vnculo. Ser multidireccionales, al contrario que los vnculos unidireccionales de HTML.

XPointer est diseado para proporcionar a XLink un modo de apuntar a lugares especficos de un documento. En su forma ms simple, XPointer puede apuntar a un elemento del que conozca su localizacin o contexto. Hace uso de un trmino de localizacin para especificar exactamente dnde debe llevar un vnculo. Estos trminos pueden definirse en trminos absolutos o relativos, con cadenas de caracteres, atributos, etc. Como puede ver, los vnculos de XML son mucho ms avanzados que los de HTML y le ofrecen ms opciones de conexin entre sus documentos.

7.2. XLL XML Linking Language nos permite todo lo visto anteriormente. Como tambin se ha descrito, engloba a dos sublenguajes: XLink y XPointer. 7.2.1. xlink Este lenguaje utiliza dos tipos de hiperenlaces: simples y extendidos. Los simples son bsicamente los mismos que se utilizan en HTML, los extendidos son los que nos permiten acceder a todas las ventajas anteriormente citadas. La forma de acceder a XLink en un documento XML, sera la siguiente: La sintaxis para trabajar con hiperenlaces simples es la siguiente: Este texto es de prueba.

- 61 -

El atributo xlink:type indica el tipo de enlace. Como en HTML, href indica la URL a la que apunta el hiperenlace. Podemos encontrarnos tambin con el atributo show, que nos indicar lo que ocurrir al pulsar en el enlace: - xlink:show="replace" , reemplaza el documento actual por el recurso al que apunta el enlace. - xlink:show="new" , abre una nueva ventana del navegador con el documento destino. - xlink:show="embed" , el recurso apuntado se incluye en el lugar del enlace y es procesado como si fuera parte del documento origen.

El trabajo con enlaces extendidos, nos permite apuntar a ms de un recurso en el mismo hiperenlace. Segn los recursos estn situados local o externamente, se utilizar resource o bien locator, respectivamente. En el enlace simple tenamos un elemento con una serie de atributos que construan el hiperenlace; en el caso del enlace extendido es en realidad un elemento cualquiera que contendr una serie de subelementos. Puede verse que en resumen, un enlace extendido contiene ms de un enlace simple con algunas particularidades. Tanto el elemento inicio como intermedio, contienen el atributo xlink:label que nos permite identificar de forma nica un elemento para indicar por ejemplo, relaciones entre ellos. En cuanto al elemento recorrido, posee como valor del atributo xlink:type la cadena arc, que identifica bsicamente un camino a recorrer entre los diferentes enlaces simples que componen el extendido. En el ejemplo que estamos tratando, mediante los atributos xlink:from y xlink:to, indicamos el comienzo y fin de ese recorrido.

- 62 -

7.2.2. xpointer XPointer es una extensin de XPath, permitindonos en el uso de hiperenlaces, acceder a cualquier punto de un documento, de manera muy exacta, incluso mediante condiciones. La sintaxis bsica sera tal como se expone seguidamente: url#xpointer(ruta XPath) /libreria/libros.xml#xpointer(/libro/capitulo[@public]) Actualmente XLink se encuentra en estado de "recomendacin", por lo que su estado como estndar del Wordl Wide Web Consortium es inminente. Respecto a XPointer su estado en el W3C es "working draft", a pesar de lo cual es conveniente su estudio, ya que se usa junto a XLink para formar XLL de manera casi inseparable.

- 63 -

RECUERDE HTML nos ofrece un mtodo simple pero poco potente de gestionar hiperenlaces. XLL hace uso de XLink y XPointer para crear y gestionar potentes enlaces. XLink trabaja todo lo referente a los enlaces. XPointer gestiona todos los puntos de un documento a los que se puede acceder mediante un hiperenlace.

- 64 -

Tema 8

DOCUMENT OBJECT MODEL

8.1. INTRODUCCIN ______________________________________________ 67 8.2. MANIPULAR UN DOCUMENTO XML ______________________________ 67 8.2.1. Objetos xml segn modelo dom_____________________________ 68 8.2.2. Propiedades de los objetos xml _____________________________ 69 8.3. INTERFACES DE DOM _________________________________________ 70 8.3.1. Node __________________________________________________ 70 8.3.2. Nodelist________________________________________________ 71 8.3.3. Document ______________________________________________ 71 8.3.4. Element________________________________________________ 71 8.3.5. Attr ___________________________________________________ 71 8.3.6. Text ___________________________________________________ 72 8.3.7. CDATASection __________________________________________ 72 8.3.8. Comment_______________________________________________ 72 8.3.9. OTRAS ________________________________________________ 72 8.3.9.1. DocumentFragment _________________________________ 72 8.3.9.2. DocumentType ____________________________________ 72 8.3.9.3. ProcessingInstruction________________________________ 73 8.3.9.4. Entity ____________________________________________ 73 8.3.9.5. Notation__________________________________________ 73 8.4. DOM EN INTERNET EXPLORER _________________________________ 74

- 65 -

8.1. INTRODUCCIN Uno de los mayores problemas que se produce con cualquier estndar, como XML por ejemplo, es que las aplicaciones que los utilizan tienden a desarrollar sus propios mtodos y particularidades. Esta situacin es ms que evidente en DHTML donde, para llevar a cabo una tarea dada, han sido desarrollados varios mtodos y distintas sintaxis en los principales navegadores, tal como Internet Explorer de Microsoft o Netscape Navigator. La recomendacin W3C XML DOM es seguramente uno de los estndares ms importantes que han aparecido tras la recomendacin XML 1.0, ya que proporciona a los desarrolladores un vocabulario comn para la manipulacin de documentos XML. Independientemente de que la aplicacin fuese escrita en C, Java, PERL, PYTHON, o en Visual Basic, podrn ser utilizados exactamente los mismos mtodos, aunque lo que vaya por debajo sea muy diferente. Es decir, es una API que nos permitir trabajar con documentos XML desde cualquier lenguaje. Del mismo modo, en la parte cliente no importa si se est utilizando Mozilla, Internet Explorer, Netscape Navigator, etc., puesto que como todos ellos implementan el mismo DOM, podemos estar seguros de que nuestro script funcionar correctamente siempre, o al menos as debera ser.

8.2. MANIPULAR UN DOCUMENTO XML Los documentos XML son generalmente dinmicos y sujetos a cambios. As que, si queremos una buena forma de modelar un documento XML, necesitamos un modelo que no slo describa las partes intrnsecas del documento, sino que tambin pueda alterarlas y aadir otras partes nuevas. El modelo W3C DOM hace esto, trata conjuntamente cada documento XML como un rbol jerrquico y como un conjunto de objetos. La recomendacin DOM tambin nos proporciona una serie de mtodos que podramos denominar "mtodos de factora" que nos permiten manipular los documentos XML. Estos mtodos nos permiten realizar acciones del tipo "pon un elemento aqu", "aade este texto all", "coloca un comentario aqu", etc. La API del W3C nos proporciona un conjunto excelente de estos mtodos, que veremos ms adelante. Veamos un documento XML bien-formado muy simple y como podra ser representado mediante un esquema en rbol:

- 67 -

Hola XML Adis HTML La siguiente figura muestra, de forma grfica, cmo quedara el anterior cdigo representado en forma de rbol:

Documento

Elemento

Elemento

Elemento

Texto

Texto

Seguir este modelo de trabajo con documentos XML nos permite crear un documento completo, recorrer su estructura, y aadir, modificar o eliminar cualquier elemento, etc.

8.2.1. Objetos XML segn modelo DOM Segn el W3C DOM, todos los objetos de un documento XML son tratados como nodos del sistema de rbol jerrquico que representa a la estructura del documento. Cada nodo puede tener a su vez, una serie

- 68 -

de interfaces especializadas, segn sea el tipo de nodo. Los objetos tpicos que nos encontramos en un archivo XML se muestran en la siguiente tabla:OBJETO DTD o tipo de documento. Instruccin de proceso. Elemento. Atributo Dato, texto. EJEMPLO ndice cronolgico tipo="indice" ndice cronolgico.

8.2.2. Propiedades de los objetos xml El objeto final de todo modelo es permitirnos crear o construir una rplica exacta de un documento original a partir del modelo. Para ello, cada objeto integrado en el citado archivo debe tener una serie de propiedades que nos lo permitan. Por supuesto, las propiedades variarn de un objeto a otro dependiendo de ste, pues si un elemento puede tener atributos, un texto nunca los tendr: o o Tipo de nodo: esta propiedad indica si el nodo es un comentario, un elemento, una instruccin de proceso, una seccin CDATA, un nodo de texto, etc. Nombre: la forma de asignar nombre a un nodo variar segn el tipo del mismo. El nombre de un nodo de elemento es su etiqueta. El nombre sugerido por la especificacin W3C DOM para un nodo de texto es #text, etc. o Valor: al igual que sucede con el nombre, el valor de un nodo depender en parte del tipo de dicho nodo. En la especificacin W3C, el valor de un nodo de elemento es "null", mientras que para un nodo de texto es la cadena de texto contenida en dicho nodo. Para otros tipos de nodos se dan otros valores. o o o o Padre: indica cul es el nodo padre. Como nica excepcin se encuentra el nodo de documento, que no tiene padre. Lista de hijos: contiene una lista con todos los nodos hijos de un nodo determinado, ordenados desde el primero hasta el ltimo. Hermanos: un nodo debe conocer su lugar dentro de una lista de hermanos, o al menos saber cual es su hermano "mayor" y su hermano "menor". Atributos: contiene una lista de pares atributo/valor dentro de un nodo elemento. En XML, el orden de los atributos no es importante. Los atributos podran ser tratados con nodos hijos, sin embargo, W3C DOM prefiere tratarlos como propiedades de los nodos de elementos.

- 69 -

8.3. INTERFACES DE DOM Vistos los tipos de objetos y sus propiedades, pasamos ahora a ver las interfaces ms comunes. El siguiente esquema muestra estas interfaces y la relacin existente entre ellas:

DocumentFragment Document Element Attr CharacterData Node DocumentType Notation Entity EntityReference NodeList ProcessingInstruction Text Comment CDATASection

8.3.1. Node Se trata de la interfaz fundamental de DOM, teniendo en cuenta que cualquier objeto de un documento XML es tratado como nodo por esta API. Los diferentes mtodos y propiedades nos permiten realizar una serie de acciones con los diferentes nodos: Recorrer el rbol de objetos , pues para realizar ajustes en l, por ejemplo, se hace necesario situarse en el lugar correcto. Tomar informacin del nodo , como puede ser el tipo de nodo, los atributos que tiene, su nombre, su valor, etc. Aadir, eliminar, modificar nodos , para alterar la estructura del rbol si es necesario.

- 70 -

8.3.2. NodeList Se trata de una interfaz que trabaja con listas de nodos. La necesidad de crear esta interface viene dada por la existencia de mtodos y/o propiedades que pueden devolver una coleccin ordenada de nodos. Se trata de una interface muy simple, ya que solamente tiene una propiedad y un mtodo: La propiedad length devuelve el nmero de objetos (nodos) que pueblan una lista de ellos. El mtodo item permite acceder a un nodo concreto de la lista a la que pertenece (y por tanto a sus respectivos mtodos y propiedades) pasndole como argumento el ndice que ocupa dentro de la lista. 8.3.3. Document Esta interfaz representa un documento XML completo. La propiedad ms comn de esta interfaz es documentElement que devuelve un objeto Element, que corresponde con el elemento raz. Tambin nos surte de mtodos que nos permiten crear objetos tpicos de un archivo XML, como elementos, atributos, etc. 8.3.4. Element Representa y permite trabajar con el nodo ms tpico de un documento XML: el elemento. Hay que hacer notar aqu, que el nombre de un nodo elemento viene dado por su etiqueta y su valor es siempre nulo, ya que el texto o dato que puede contener es a efectos del DOM otro nodo diferente. 8.3.5. Attr En DOM, la palabra "attribute" ha sido acortada a "attr" para evitar ambigedades. Los atributos no son considerados como hijos de los elementos, debido principalmente a que el orden de aparicin de los atributos carece de importancia. De esta forma, los pares atributo/valor se visualizan mejor como una propiedad del elemento, no siendo por tanto parte de la estructura en rbol de un documento. Es necesario tener esto en cuenta, pues no se puede trabajar con ellos indicando cual es por ejemplo su nodo "padre" o superior.

-

- 71 -

8.3.6. Text El nombre de un nodo de texto es "#text", y su valor es su contenido. Esta interfaz no puede tener hijos. 8.3.7. CDATASection El nombre de un nodo de una seccin CDATA es "#cdata-section", y su valor es su contenido. Esta interfaz no puede tener hijos. 8.3.8. Comment El nombre de un nodo de comentario es "#comment", y su valor es su contenido, es decir, todo lo que haya entre . Esta interfaz no puede tener hijos. 8.3.9. Otras Pasamos a ver ahora interfaces menos frecuentes en su utilizacin. 8.3.9.1. DocumentFragment Un fragmento de documento es un concepto muy til. Es posible construir un fragmento de documento partiendo de varios nodos y despus insertarlo dentro del documento XML. La nica condicin que debe cumplirse es que el documento final deber seguir estando bien formado despus de haber sido incorporado dicho fragmento. El nombre de un nodo documentFragment es siempre "#documentfragment", y tiene un valor nulo. 8.3.9.2. DocumentType La especificacin W3C DOM no hace grandes esfuerzos por soportar los DTD en su totalidad. El tipo de documento da acceso a las entidades y notaciones contenidas en la DTD, pero en no hay intencin de soportar las declaraciones de elementos y atributos. El nombre de un nodo de tipo de documento viene dado por la cadena que sigue a