XML (extensible Markup Language)



Documentos relacionados
XML, DTD y hojas de estilo

Capítulo 1 Documentos HTML5

Transformación de documentos XML con

Unidad 6: DTD. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012

extensible Markup Language

1 Introducción a XML

Práctica de introducción a

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición)

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Agenda XML XML XML XML XML. 1.1 Conceptos básicos de XML. 1.2 Ejemplos de lenguajes basados en XML. 1.3 Estructura de un documento XML

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

extensible Markup Language (XML)

Sistemas de Información 12/13 XML (extensible Mark-up Language)

Diseño de páginas web 2011

Documentación Electrónica

Informàtica i Comunicacions Plaça Prnt. Tarradellas, FIGUERES (Girona) Tel Fax

Operación Microsoft Access 97

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

Creación del sitio web del Laboratorio F1

Tema: Maquetación Web y CSS

Unidad 1. Introducción a HTML (I)

Plantilla de texto plano

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Introducción a la Firma Electrónica en MIDAS

ADAPTAEMPLEO INFORME ACCESIBILIDAD. octubre Versión 1.0

Introducción a XML. Simon Pickin Ingeniería Telemática. Basado en una presentación de M. Carmen Fernández Panadero <mcfp@it.uc3m.

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Creación y administración de grupos de dominio

Transformación documentos XML. Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo

PREGUNTAS TIPO (EXAMEN DE OFIMÁTICA AVANZADA)

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

Fundamentos de las tecnologías de la información

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

UF0513 Gestión auxiliar de archivo en soporte convencional o informático

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha

Formularios. Formularios Diapositiva 1

Curso PHP Módulo 1 R-Luis

5.- Crear páginas web con Nvu

Análisis y Diseño de Sistemas de

13.2 WORLD WIDE WEB (www)

Introducción a la plataforma Moodle Aníbal de la Torre Plataforma Moodle. Accediendo a los contenidos

El módulo de texto plano es un sencillo editor. Al seleccionarlo en la caja de módulos, el área central adoptará al siguiente aspecto:

Web. Web Diapositiva 1

Person IP CRM Manual MOBILE

Manual CMS Mobincube

DOCUMENTACIÓN TÉCNICA

Tema 4 Metadatos. Eduardo Martínez Graciá Humberto Martínez Barberá

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

V Manual de Portafirmas V.2.3.1

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Manual de Usuario Sitio Dinámico e-ducativa Versión

SPIP (v.1.8) Manual para redactores Alfredo Sánchez Alberca

Operación de Microsoft Word

01 Índice. GESTOR DE CONTENIDOS Manual de uso 01 ÍNDICE OBJETO DEL DOCUMENTO ESTRUCTURA GRÁFICA DEL SISTEMA... 3

Microsoft Access proporciona dos métodos para crear una Base de datos.

XSL: extensible Style Language. Anabel Fraga

ESTRUCTURA DE LOS SITIOS DE CATEDRAS

CONSEJOS DE CÓMO CREAR UN DOCUMENTO ADOBE PDF ACCESIBLE A PARTIR DE UN DOCUMENTO MICROSOFT WORD ACCESIBLE

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

Manual del Usuario. Sistema de Help Desk

Componentes de Integración entre Plataformas Información Detallada

Manual de Usuario de la Herramienta SICRES-Tester. SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 08/04/2014

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML

Validación de un XML

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

BASES DE DATOS OFIMÁTICAS

UNIT4 CRM. Información de usuario. Release notes. v a v UNIT Ref. acv9010u.docx

Guardar y abrir documentos

Manual del Alumno de la plataforma de e-learning.

HTML. HyperText Markup Language (Lenguaje de Marcas de Hipertexto)

Figura 4.1 Clasificación de los lenguajes de bases de datos

XML: extensible Markup Language (Parte I) Ingeniería de la Información

TEMA 5 LA FAMILIA XML EN LA NUEVA WEB

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

OFICINA VIRTUAL SIS MANUAL DE TUTOR

Web. Microsoft Excel: Capítulo 1 Creación de páginas web con Dreamweaver

Colegio de Ingenieros de Caminos, Canales y Puertos. Manual de Gestión de correo electrónico y SMS

TEMA 9 CREACIÓN DE PÁGINAS WEB

CÓMO CREAR UNA PÁGINA WEB

Introducción a las redes de computadores

MANUAL DE USUARIO FACTURACIÓN ELECTRÓNICA

Cuadros de mando interactivos para los responsables de la toma de decisiones

MANUAL ECOMMERCE 2.0

Elementos requeridos para crearlos (ejemplo: el compilador)

Manual de usuario del Centro de Control

Administración Local Soluciones

TEMA 35: Estándares SGML y XML. Entornos de aplicación.

LiLa Portal Guía para profesores

Capítulo 9. Archivos de sintaxis

GedicoPDA: software de preventa

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Transcripción:

XML (extensible Markup Language) Introducción... 2 XML y la Web... 2 Ventajas e Inconvenientes de XML... 2 Usos de XML... 3 Estándares acompañantes a XML... 3 Sintaxis XML... 4 Estructura y requisitos de un documento XML... 6 Estructura de un documento XML... 6 Requisitos de un documento XML... 7 Creando su propia gramática XML... 8 Espacios de nombre... 9 Definición de Tipos de Documentos (DTDs)... 9 Hojas de Estilo... 17 CSS... 17 XSL... 19 Otros estándares relacionados... 28 DOM (Document Object Model)... 28 Schemas... 28 Referencias... 28

Introducción XML es un lenguaje abierto que se ha diseñado y optimizado para mejorar la funcionalidad de la Web. Para ello se le ha dotado de la capacidad de describir la semántica de los datos ofreciendo así una forma más flexible de identificar la información. XML es una versión reducida de SGML(Standard Generalized Markup Language) del que se ha eliminando aquellas características que lo hacían demasiado complejo para programar en la Web. SGML es un lenguaje de marcas estándar (ISO 8879), como HTML, que permite definir cómo se va a estructurar y representar entidades de información en un documento. HTML (HyperText Markup Language RFC 1866) es también una pequeña aplicación de SGML, pero a diferencia de ésta, fue diseñada para especificar cómo debía mostrarse el contenido de un documento en pantalla. HTML, por tanto, es un convenio para representar la información desde el punto de su visualización en una página web, en el que las entidades son, por ejemplo, la cabecera (<HEAD>), el cuerpo (<BODY>), los párrafos (<P>), etc. El W3C (World Wide Consortium) es el responsable del desarrollo de la especificación, la versión 1.0 de XML fue aceptada el 10 de febrero de1998. Versión oficial actualizada: www.w3c.org/tr/rec-xml. Versión 1.0: www.w3c.org/tr/1998/rec-xml-19980210 XML y la Web HTML ha sido la base de la difusión y popularidad de la Web. Este éxito ha provocado la inclusión de nuevas etiquetas (más de 100 sin contar las específicas de los exploradores) con lo que se ha convertido en un lenguaje complicado. Como consecuencia de esto, los servidores Web son bastante complejos y el tiempo que les lleva formatear una página se ha incrementado ostensiblemente pues son ellos los responsables de generar el documento HTML adecuado para el tipo de navegador que solicita la página. Este trabajo desaparece, en el caso de generar XML en el servidor, pues se le envía el mismo documento XML a todos los navegadores. Además, si se quisiera transformar el documento XML en un documento HTML, el servidor le asignaría una hoja de estilo al documento XML y el equipo cliente realizaría la transformación, descargando de ese modo al servidor. Por otra parte, el navegador también se beneficia de recibir documentos XML ya que pueden manipular los datos de forma inteligente (tags descriptivos) por medio de scripts en el cliente, lo que reduce el número de veces que el navegador debe comunicarse con el servidor para procesar datos o recibir una vista diferente de los mismos. Ventajas e Inconvenientes de XML Se puede decir que XML facilita el intercambio de información entre aplicaciones de una o varias empresas (business to business) y que además es útil como medio para integrar diferentes fuentes de información presentando una interfaz de datos común. Pero como toda tecnología tiene sus ventajas e inconvenientes: Como ventajas se encuentran que el lenguaje es extensible, ya que permite incorporar tus propios tags; es interoperable, pues no depende de sistema operativo, lenguaje o fuente de

datos de aplicaciones que lo gestionen; y, por último, es autodescriptivo, su estructura es fácilmente identificable en aplicaciones futuras. Como inconvenientes se encuentran dos principalmente: uno, que XML define la estructura de los datos pero no describe cómo manipularlos (semántica limitada); y el otro es que aún hay aspectos del lenguaje que no están estandarizados. Usos de XML Las aplicaciones de XML se pueden clasificar en dos grandes grupos: Aplicaciones de Documento (publicar en Web) y Aplicaciones de Datos (intercambio de datos). Algunos ejemplos de uso pueden ser: Mantenimiento de sitios Web grandes. Intercambio de información entre organizaciones: Para que distintos sistemas intercambien información requieren definir un formato común para representar los datos. Para ello, Microsoft ha desarrollado la herramienta BizTalk que pretende definir cómo utilizar XML para conseguir integrar sistemas heterogéneos definiendo un modelo común de información que no requiera elementos software intermedios de comunicación ni modificar los modelos de ninguno de los sistemas (www.biztalk.org). Aplicaciones de Bases de Datos. Dada la popularidad de XML, los gestores de bases de datos están ampliando su lenguaje SQL para ofrecer el resultado de una consulta en formato XML, además de posibilitar la inserción y manipulación de registros por medio de este lenguaje. Este es el caso de SQL Server 2000 de Microsoft. Libros electrónicos. XML tiene sus raíces en la publicación electrónica (documentación técnica, páginas web,...) ligada generalmente a una hoja de estilo. Este lenguaje es una buena alternativa para mantener la documentación en un formato independiente de los medios y convertirla automáticamente en formatos de publicación como HTML, PDF, PostScript, RTF... Estándares acompañantes a XML XML Namespace: permite la extensibilidad y reutilización de un documento, asignando un dueño a los elementos del mismo. Hojas de Estilo: XSL (hojas de estilo extensible) y CSS (hojas de estilo en cascada). Especifican cómo deben presentarse los documentos en pantalla, en papel o en un editor. DOM (modelo de objetos de documento) y SAX (API simple para XML) son APIs para acceder a documentos XML sin preocuparse de la sintaxis. DOM es más adecuado para formularios y editores, SAX se adapta mejor en aplicaciones de intercambio de datos. Xlink y Xpointer, aún en desarrollo, permite establecer relaciones entre documentos.

Sintaxis XML Un documento XML es un fichero que solo contiene texto. En él se distinguen caracteres de información y caracteres de marcado. El marcado se reconoce porque va encerrado entre paréntesis angulares (<>). La unidad básica de información en XML es el elemento, que se definirá con su etiqueta de apertura y de cierre, siempre obligatorias. Los elementos también pueden ser anidados. En el ejemplo se presenta el elemento direccion que está compuesto por los elementos calle, ciudad, codigo-postal, region y pais. <direccion> </direccion> <calle> Avda Los Castros</calle> <ciudad>santander</ciudad> <codigo-postal>39005</codigo-postal> <region>cantabria</region> <pais>españa</pais> Los nombres del elemento deben comenzar con letra o con underline y después le puede seguir cualquier carácter a excepción del espacio en blanco y los dos puntos. Los nombres no pueden comenzar con las letras xml. En XML se distinguen las mayúsculas de las minúsculas, por lo que generalmente se trabaja con minúsculas. A través de los atributos se puede añadir información adicional a los elementos, éstos tienen nombre y valor. El valor va entre comillas dobles o simples en función del contenido (si en la información hay comillas dobles, se enmarcará con simples y viceversa). La definición de atributos sigue la sintaxis siguiente: Un ejemplo podría ser: <NombreElemento Atributo1= valor [...AtributoN= valor ]> <tel preferente= true > 942201363 </tel> donde tel es el elemento, preferente el atributo y true el valor asignado al atributo. El procesador (parser) XML ignora los espacios en blanco, tabuladores y el carácter de nueva línea en el comienzo de la etiqueta así que el siguiente tag está correctamente escrito: <tel preferente= true > 942201363 </tel> Los elementos que no tienen información se conocen como elementos vacíos y se pueden definir de estas dos formas: o <correo-e href= mailto:pepe@unican.es > </correo-e> <correo-e href= mailto:pepe@unican.es />

Generalmente estos elementos se utilizan como flags, o bien, llevan información en sus atributos como por ejemplo una imagen que represente al elemento u otra información con contenido no textual. Un documento XML es, en definitiva, un árbol de elementos en el que no hay límite de profundidad, pero en el que se debe cumplir que todos los elementos son hijos de un solo elemento. La declaración XML reconoce a un documento como tal y debe ir en la primera línea del documento. Un procesador XML puede rechazar un documento que tenga una versión desconocida para él. Encoding es el atributo con el que se indica en qué código de caracteres está escrito el documento xml. ISO-8859-1 corresponde a la codificación de las lenguas europeas. Los documentos con codificación diferente a UTF-8 (Unicode Transformation Formats)o UTF-16 deben contener este atributo. <?xml version="1.0" encoding="iso-8859-1"?> Los caracteres <? y?> definen las instrucciones de procesamiento. Estas ofrecen al procesador XML información adicional que le ayuda a interpretar correctamente los contenidos del documento. Un ejemplo de uso es la declaración de un documento XML que se acaba de estudiar. Otro, que se muestra a continuación, sirve para transformar la apariencia del documento XML en el navegador al aplicarle una hoja de estilo. <?xml-stylesheet href= simple.xsl type= text/xsl?> El primer nombre, xml-stylesheet, es el destino e indica la aplicación o dispositivo al que están dirigidas las instrucciones. El resto de los atributos están en el formato específico de la aplicación receptora. Los comentarios en un documento XML se insertan del siguiente modo. <!--documento de ejemplo inspirado en vcard 3.0 --> Los comentarios pueden escribirse en cualquier parte del documento excepto en los tag de comienzo y fin. No se puede utilizar los caracteres -- dentro de un comentario. XML organiza el documento en entidades y no en términos de archivos. Una entidad se representa por su nombre precedido de un & y seguido de un ;. Por ejemplo: < inserta el carácter < & inserta el carácter & (p.ej.<compañía>mark & Spencer </compañía>) XML predefine entidades para los caracteres utilizados en el marcado, estos son: Entidad Reemplaza a < < & & > > &apos; ' " " XML también soporta referencias a caracteres comenzando con &#x para representación hexadecimal y &# para la decimal (ej: Paragüas)

XML define dos atributos especiales: xml:space para controlar si la aplicación debe descartar los espacios en blanco innecesarios (default) o no (preserve). Incluye también los saltos de línea y tabuladores. Suele utilizarse en combinación con la sección CDATA. xml:lang para indicar el idioma en el que está escrito el documento, útil para la publicación. <p xml:lang= en-us >What colour is it? </p> Por último, las secciones CDATA permiten que el procesador XML ignore el marcado. Esto es útil, por ejemplo, para la escritura de fórmulas o para incluir texto XML dentro de un documento XML. CDATA significa datos de caracteres, que difiere de PCDATA, que se verá más adelante, que significa datos de caracteres analizados y que no puede contener caracteres de marcado. Un ejemplo de uso es el que se puede observar en la Fig. 1. <?xml version="1.0" encoding="iso-8859-1"?> <!--ejemplo que inserta un ejemplo XML en un documento XML> <ej xml:space= preserve > <![CDATA[ <?xml version="1.0" encoding="iso-8859-1"?> <entrada> <nombre-completo> Angel Alonso </nombre-completo> </entrada> ]]> </ej> Fig. 1. Ejemplo de uso de la sección CDATA. Estructura y requisitos de un documento XML Estructura de un documento XML Un documento XML consta de un prólogo y un elemento raíz. El prólogo contiene la información (meta información) sobre el resto del documento, como son la versión de XML y el código de caracteres utilizado. También en él se incluye la descripción de la estructura del resto del documento, generalmente recogida en un DTD (Document Type Definition) o en un Schema XML. En la especificación formal de un documento XML, los datos consisten de un simple elemento, que a su vez contiene a otros elementos y atributos, denominado elemento raíz. Un ejemplo de documento XML, inspirado en vcard 3.0 se presenta en la Fig. 2. En este ejemplo, el documento sigue la versión 1.0 de XML, el código de caracteres ISO-8859-1 y utiliza un DTD definido en el fichero agenda.dtd. El elemento agenda es el elemento raíz. <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE agenda SYSTEM "agenda.dtd"> <!--documento de ejemplo inspirado en vcard 3.0 -->

<agenda> </agenda> <entrada> </entrada> <entrada> </entrada> <nombre-completo>marta Elena Zorrilla </nombre-completo> <direccion> </direccion> <calle> Avda Los Castros</calle> <ciudad>santander</ciudad> <codigo-postal>39005</codigo-postal> <region>cantabria</region> <pais>españa</pais> <tel preferente="true"> 942201363</tel> <correo-e href="zorrillm@unican.es"></correo-e> <nombre-completo> <nombre> Manuel Antonio </nombre> <apellidos>lópez Camino</apellidos> </nombre-completo> <direccion> </direccion> <calle> Avda. Los Castros</calle> <ciudad>santander</ciudad> <codigo-postal>39005</codigo-postal> <region>cantabria</region> <pais>españa</pais> <tel preferente="true"> 942335353</tel> <tel>942232323</tel> Requisitos de un documento XML Fig. 2. Ejemplo de documento XML. Un documento XML debe cumplir con los siguientes requisitos para que el procesador pueda interpretarlo. Estos son: 1. El documento debe tener un solo elemento raíz. 2. Todas las etiquetas (tags) abiertas deben tener su respectivas etiquetas de cierre. 3. XML distingue mayúsculas de minúsculas por lo que todos los elementos y atributos deben seguir la definición.

4. Todos los elementos deben estar correctamente anidados. 5. Los valores de los atributos deben ir entre comas simples o dobles. 6. No se pueden repetir atributos en un mismo elemento. Por ejemplo, si se quiere representar múltiples autores para un libro, se debe definir el autor como un elemento y no como un atributo. Como norma general, se definirán elementos para los datos que van a ser leídos por las personas y atributos para aquellos que van a ser procesados por las máquinas. Un documento se dice que es válido si cumple con la estructura marcada en un DTD o Schema. Creando su propia gramática XML En la actualidad están disponibles un gran número de gramáticas XML que resuelven las necesidades específicas de determinados sectores. Así se tienen por ejemplo:! Open Financial Exchange (OFX)! Open Trading Protocol (OTP)! Vcard! Legal Working Group! Automotive Industry! Chemical Markup Language (CML)! Telecomms! Classified Ads Dado que XML es extensible, si uno no encuentra una gramática adecuada a sus necesidades puede definir la suya propia. Para ello puede optar por crear DTDs o crear Schemas. Los DTDs definen los elementos y atributos que se permiten utilizar en el documento y la relación entre ellos. Los Schemas, son una propuesta de Microsoft y tienen el mismo propósito que los DTDs pero ofrecen más precisión y flexibilidad. Las principales diferencias son:! Los schemas pueden definir un modelo de contenido abierto. Esto quiere decir que pueden aparecer elementos y/o atributos en un elemento sin tenerlo que declarar previamente en el schema. Los DTD son cerradas.! Los schemas permiten especificar el tipo de dato de los elementos y atributos. Los DTD no.! Los schemas son extensibles por medio de los espacios de nombre, mientras que sólo un DTD puede ser utilizado en un documento XML?! Los schemas se pueden aplicar a elementos individuales con objeto de definir la gramática de partes de un mismo documento.! Los schemas XML utilizan una sintaxis más parecida a xml.

Espacios de nombre Esta posibilidad de crear cada usuario su propia gramática hace necesario de algún mecanismo que permita distinguir el significado de dos elementos con el mismo nombre en distintos DTDs o Schemas. Este mecanismo recibe el nombre de espacios de nombres (namespaces). Con ellos, se pueden mezclar en un mismo documento elementos que se someten a esquemas diferentes y, por tanto, conseguir que datos provenientes de fuentes diferentes coexistan en un único documento XML. En el ejemplo de la Fig. 2, se quiere incluir en el documento XML elementos de diferentes esquemas, uno proveniente de una hipotética agenda y otro proveniente de un esquema de personal también ficticio. Para ello se deben definir, primeramente, los espacios de nombre. La sintaxis que se requiere es la siguiente: <prefijo_local:nombre_elemento xmlns:prefijo_local=espacio_de_nombre> </prefijo_local:nombre_elemento> donde xmlns es un atributo estándar que representa el espacio de nombres. El espacio_de_nombre se identificará por medio de una URI (Universal Resource Identifiers) que bien puede tomar la forma de una URL(Universal Resource Locutor) o una URN (Universal Resource Name). La ruta a la que la URI apunte no requiere tener un contenido específico, por lo que la URL del Web Site propio es una buena elección. Nombre_elemento es el elemento que se verá afectado por el espacio de nombres y prefijo_local es una abreviatura para no tener que escribir la URI de nuevo. A continuación se hará uso de los prefijos_locales para identificar a qué esquema está sometido cada elemento del documento. <?xml versión= 1.0 encoding= ISO-8859-1?> <mi_agenda xmlns:cld= http://localhost/telefono/1.0 <entrada> xmlns:prd= http://www.ejemplo.com/personal/1.0 > <cld:nombre-completo> Marta Zorrilla </cld:nombre-completo> <cld:tel>942201363</cld:tel> <prd:dni> 20202020M </prd:dni> <prd:categoria>profesor</prd:categoria> </entrada> </mi_agenda> Fig. 3. Ejemplo de uso de los Espacios de Nombre. Definición de Tipos de Documentos (DTDs) El lenguaje DTD se inventó para definir reglas de validación para los documentos SGML. Como XML es un conjunto simplificado de SGML, los DTDs se pueden utilizar para definir reglas de validación para los documentos XML. La sintaxis de los DTDs es diferente a la sintaxis de los documentos XML. Los DTDs describen los elementos que pueden participar en un documento XML, indicando los que son obligatorios y los que son opcionales, también especifican el número de ocurrencias que puede haber de un elemento y describen la relación entre los elementos y de los atributos respecto a ellos.

Un DTD comienza con la declaración DOCTYPE seguido del nombre del DTD, el cual debe coincidir con el nombre del elemento raíz. Las reglas del DTD bien pueden escribirse a continuación de DOCTYPE entre corchetes (ver Fig. 4) o bien, en un fichero independiente, caso del ejemplo de la Fig. 5, donde se presenta el DTD asociado al ejemplo de la agenda personal utilizado en la Fig. 2: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE agenda [ <!ELEMENT agenda ((entrada)+)> <!ELEMENT entrada (nombre-completo,(tel)*,(fax)*)> <!ELEMENT nombre-completo (#PCDATA nombre-pila nombre apellidos)*> <!ELEMENT nombre-pila (#PCDATA)*> <!ELEMENT nombre (#PCDATA)*> <!ELEMENT apellidos (#PCDATA)*> <!ELEMENT tel (#PCDATA)*> <!ATTLIST tel preferente (true false) "false"> <!ELEMENT fax (#PCDATA)*> <!ATTLIST fax preferente (true false) "false"> ]> <agenda> <entrada> <nombre-completo>marta Zorrilla</nombre-completo> </entrada> </agenda> Fig. 4. Especificar el DTD dentro del documento XML.Versión reducida del ejemplo agenda. Un documento XML se validará con un DTD que se encuentra en un fichero independiente al leer el procesador la instrucción siguiente (ver uso en Fig. 2): <!DOCTYPE agenda SYSTEM "agenda.dtd"> <?xml version="1.0" encoding="iso-8859-1"?> <!-- Elemento de alto nivel, la agenda de direcciones--> <!ELEMENT agenda (entrada)+> <!-- Una entrada es un nombre con sus direcciones, teléfonos,... Puede haber más de una.--> <!ELEMENT entrada (nombre-completo,(direccion)*,(tel)*,(fax)*,(correo-e)*)> <!-- Un nombre-completo se compone de una cadena de caracteres, nombre de pila, nombre y apellidos--> <!ELEMENT nombre-completo (#PCDATA nombre-pila nombre apellidos)*>

<!ELEMENT nombre-pila (#PCDATA)*> <!ELEMENT nombre (#PCDATA)*> <!ELEMENT apellidos (#PCDATA)*> <!-- Dirección, si hay varias direcciones el atributo preferente indica la predeterminada--> <!ELEMENT direccion (calle,(ciudad)?,codigo-postal,region,pais)> <!ATTLIST direccion preferente (true false) "false"> <!ELEMENT calle (#PCDATA)*> <!ELEMENT ciudad (#PCDATA)*> <!ELEMENT codigo-postal (#PCDATA)*> <!ELEMENT region (#PCDATA)*> <!ELEMENT pais (#PCDATA)*> <!-- telefono, fax y correo --> <!ELEMENT tel (#PCDATA)*> <!ATTLIST tel preferente (true false) "false"> <!ELEMENT fax (#PCDATA)*> <!ATTLIST fax preferente (true false) "false"> <!ELEMENT correo-e EMPTY> <!ATTLIST correo-e href CDATA #REQUIRED preferente (true false) "false"> Fig. 5. DTD que recoge la estructura de una agenda personal. Un DTD, como se ha indicado previamente, consta básicamente de elementos y atributos. Los elementos se declaran utilizando la siguiente sintaxis: <!ELEMENT agenda (entrada)+> donde agenda es el nombre del elemento y (entrada)+ es el modelo de contenido, que indica que el elemento agenda puede tener uno o más elementos entrada. También el modelo de contenido puede ser una lista de elementos y/o una de las siguientes palabras reservadas: #PCDATA: se pone para analizar datos de caracteres y significa que el elemento puede contener texto. Generalmente se utiliza para los elementos hoja. EMPTY: indica que el elemento es vacío. Siempre indica que el elemento es hoja. ANY: indica que el elemento puede contener cualquier otro elemento declarado en el DTD. Apenas se utiliza. Un ejemplo de uso se tiene en la definición del elemento nombre-completo:

<!ELEMENT nombre-completo (#PCDATA nombre-pila nombre apellidos)*> <!ELEMENT nombre-pila (#PCDATA)*> <!ELEMENT nombre (#PCDATA)*> <!ELEMENT apellidos (#PCDATA)*> Para indicar si un elemento puede contener a otros e indicar en este caso cuántos, se utilizan los indicadores de ocurrencia. Se tiene los siguientes: Indicador Elemento aparece + 1 o más veces * 0 o más veces? 0 ó 1 vez solo una vez Además en el DTD se puede expresar el orden en el que aparecerán los elementos para lo que se utilizan los conectores. Se tienen los siguientes: Carácter, : indica que los elementos de la derecha e izquierda deben aparecer en el mismo orden dentro del documento. Carácter : indica que sólo uno de los elementos puede aparecer dentro del documento. En el caso de que el modelo de contenido sea mixto, contenga #PCDATA y elementos, debe tener el indicador de ocurrencia *, lo que se indica que el modelo puede repetirse. Los atributos también se declaran en el DTD para lo que se utiliza el término ATTLIST. Se declaran utilizando la sintaxis siguiente: <!ATTLIST nombre_elemento nombre_atributo categoria valor> Un ejemplo para la definición del atributo preferente en el elemento tel, se presenta a continuación: <!ATTLIST tel preferente (true false) "false"> La sintaxis permite agrupar la declaración de varios atributos al mismo elemento, como se puede observar en el siguiente ejemplo: <!ATTLIST correo-e href CDATA #REQUIRED preferente (true false) "false "> El DTD proporciona más control sobre el contenido de los atributos que sobre el contenido de los elementos. Los atributos se dividen en tres categorías: Atributos de cadena de caracteres que contienen texto <!ATTLIST correo-e href CDATA #REQUIRED> Atributos de validación que restringen el contenido del atributo <!ATTLIST entrada id ID #IMPLIED>

Atributos de tipo enumerado que aceptan un valor de una lista definida <!ATTLIST entrada preferente (true false) false > Los tipos de atributos pueden tomar cualquiera de los siguientes valores para el parámetro categoría: CDATA para atributos de cadena de caracteres ID para identificador. Su nombre es único para el documento. IDREF debe ser el valor de un ID usado en otra parte del mismo documento. Se usa para crear vínculos dentro de un documento. IDRES es una lista de IDREF separados por espacios. ENTITY debe ser el nombre de una entidad externa. ENTITIES es una lista de ENTITY separadas por espacios. NMTOKEN es una palabra sin espacios. NMTOKENS es una lista de NMTOKEN separados por espacios. Lista de tipos enumerados es una lista cerrada de nmtokens separados por. De forma opcional, la DTD puede especificar un valor por defecto para el atributo. El valor predeterminado puede tomar uno de los siguientes valores: #REQUIRED: el valor debe ser proporcionado por el documento. #IMPLIED: si no se proporciona el valor, la aplicación debe usar su propio valor predeterminado. #FIXED seguido de un valor significa que el valor del atributo debe ser el valor declarado dentro de la DTD. Un valor literal, significa que el atributo tomará este valor si no se proporciona ningún valor en el documento. En la Fig. 2 se presenta un ejemplo de utilización de la DTD agenda.dtd en el documento doc-agenda.xml. En la Fig. 6 se presenta, de forma gráfica, el árbol de elementos correspondiente a este DTD creado con la aplicación excelon Stylus Studio.

Fig. 6. Árbol de elementos de la DTD agenda creada con excelon Stylus Studio. La DTD está dividida en subconjuntos externos e internos. Los internos están incluidos entre corchetes dentro de la declaración del tipo de documento. Los externos son referenciados o bien, por el URI (Identificador Universal de Recursos), o bien, por un identificador público que apunta a una DTD grabada con el ISO 9070. Estos pueden ser del sistema (SYSTEM) o públicos (PUBLIC). Los del sistema deben ser descargados por el procesador XML de la URI mientras que los públicos, se utilizan para manejar copias locales de DTDs. Los procesadores XML mantienen una lista con los identificadores públicos y sus URIs asociadas. La declaración de un identificador público sigue la sintaxis ( -//organización//propietario//idioma URI) <!DOCTYPE agenda PUBLIC -//Pineappleasoft//libreta direcciones//sp http://catwoman.pineapplesoft.com/dtd/libreta-direcciones.dtd > <!DOCTYPE agenda SYSTEM http://www.aaa.com/agenda.dtd > Los identificadores de sistema deben escribirse a continuación de los públicos. El signo indica que la organización no está registrada con el ISO, en caso contrario, se escribe +.

Si todas las entradas que pueden influir en el documento están en subconjuntos internos de la DTD, se dice que el documento es independiente. La sintaxis XML tiene un atributo que indica si el documento es independiente, este es standalone. <?xml version= 1.0 standalone= yes?> Las entidades son la representación física de los documentos XML. El documento XML, sus DTD y los archivos a los que hace referencia son entidades. XML no indica cómo se deben almacenar o acceder a las entidades, esto es una tarea del procesador XML. Las entidades se clasifican en : Generales y de parámetro. Las generales pueden aparecer en cualquier lugar del texto o de los marcadores (p.ej. < entidad predefinida). Las entidades de parámetro solo pueden aparecer en el DTD. En realidad, no tienen muchas aplicaciones. <!ENTITY %bolean (true false) false > <!ELEMEN tel (#PCDATA)> <!ELEMEN tel prefered %bolean;> Internas y externas. Las entidades internas son almacenadas en el documento y las externas apuntan a un identificador del sistema o público. Las externas, a su vez, pueden ser analizadas o no. Si son analizadas, la entidad debe contener texto y marcado XML válidos y se utilizan, generalmente, para compartir texto entre varios documentos. En la Fig. 7 se presenta el ejemplo de la agenda pero haciendo uso de entidades, para ello se ha copiado el texto correspondiente para cada entrada en un fichero, marta.ent y angel.ent respectivamente. <?xml version= 1.0 encoding= ISO-8859-1 > <!DOCTYPE agenda [ <!ENTITY marta SYSTEM marta.ent > <!ENTITY manuel SYSTEM manuel.ent > ]> <agenda> &marta; &manuel; </agenda> Fig. 7. Ejemplo de utilización de entidades Las entidades no analizadas se utilizan para incluir contenido que no es XML como imágenes, sonidos, películas,... Las entidades no analizadas proveen un mecanismo para cargar los datos y asociarlas con la herramienta adecuada, para lo que se usa la palabra NDATA. Por otra parte es necesario asociar la entidad no

analizada con la herramienta apropiada para lo que se hace uso de las notaciones, NOTATION. Un ejemplo de uso se tiene en la Fig. 8. <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE imagen [ <!NOTATION gif SYSTEM "image/gif"> <!ENTITY warn SYSTEM "warning.gif" NDATA gif> <!ELEMENT imagen EMPTY> <!ATTLIST imagen picfile ENTITY #REQUIRED >]> <imagen picfile="warn"/> Fig. 8. Ejemplo de uso de entidades para incorporar imágenes. En general, las entidades son muy útiles para crear módulos y ayudar a manejar grandes conjuntos de DTDs y documentos. En el siguiente ejemplo se utilizan una entidad, math.dtd, cuyas declaraciones serán utilizadas como internas, es decir, estarán disponibles para el documento que se construya utilizando el DTD artículo. <!DOCTYPE articulos SYSTEM articulo.dtd [ <!ENTITY % math SYSTEM math.dtd > %math;]> Además, el DTD interno sobreescribe las declaraciones del DTD externo, es decir, si hubiera algún elemento común en articulo y math, prevalece el definido en math. Esto se utiliza generalmente para crear DTD propias, sobrescribiendo DTDs públicas. La secuencia en la que se declaren las entidades es importante ya que la primera toma preferencia respecto a la segunda y así sucesivamente. Las secciones IGNORE y INCLUDE añaden flexibilidad al alcance modular de los DTDs y facilitan además la personalización de los documentos. Sólo se pueden utilizar en DTDs externos, no dentro del contenido del documento ni en un subconjunto interno de DTD. En el ejemplo que se presenta a continuación se tiene el DTD listas con dos secciones, uno indicando los astros en español y otra en inglés. <![%lista_español;[ <!ENTITY moon luna > <!ENTITY sun sol >]]> <![%lista_ingles;[ <!ENTITY moon moon > <!ENTITY sun sun >]]> A continuación se presenta el documento en el que se hace uso de él.

<?xml version="1.0"?> <!DOCTYPE astros SYSTEM "astros.dtd" [ <!ENTITY % lista_español "INCLUDE" > <!ENTITY % lista_ingles "IGNORE">]> <astros> La &moon; y el &sun; son mis astros preferidos. </astros> Donde astros.dtd tiene el contenido siguiente: <?xml version="1.0" encoding="iso-8859-1"?> <!ENTITY % lista SYSTEM "listas.dtd"> %lista; Dado que se ha incluido la lista_español, el texto que se visualizará será La luna y el sol son mis astros preferidos. Hojas de Estilo XML se concentra en la estructura de la información y no en su apariencia. XML es soportado por dos lenguajes de hojas de estilo: CSS (Hojas de Estilo en Cascada) y XSL (Lenguaje de Hojas de Estilo Extensible). CSS CSS es un conjunto de normas que le indican al navegador WEB cuál es la fuente, estilo y margen a utilizar para mostrar el texto. XSL es más ambicioso. Es un lenguaje que permite: transformar el documento antes de mostrarlo, agregar elementos específicamente como un logotipo, generar material a partir de otro, presentar información con un nivel adecuado de detalles, alternar entre diferentes DTDs o distintas versiones de las mismas y transformar documentos XML a HTML. CSS describe directamente cómo realzar el texto XML en el navegador. En la Fig. 9 se presenta una hoja de estilos sencilla en CSS asociado al ejemplo de la agenda. En él se describe el aspecto que debe mostrar cada elemento en pantalla. /*hoja de estilo CSS. Hoja1.css*/ entrada { font-family: Palatino,Garoamond,"Times New Roman"; font-size: 12pt; margin: 5px; } nombre-completo

{ display:block; background: silver; margin-botton: 10px; font-size: 20pt; color: black; text-decoration: underline; border-style: solid; } tel { display:block; margin-botton: 10px; font-size: 12pt; font-weight: bold; padding: 5px; } direccion calle, codigo-postal ciudad,region { font-style: italic; display:block } Fig. 9. Ejemplo hoja de estilo en cascada de nombre hoja1.css. En la Fig. 10 se muestra el aspecto que presenta la agenda en el navegador cuando se la asigna la hoja de estilos hoja1.css. Para realizar esta asignación se debe escribir la siguiente línea de texto a continuación de la declaración XML del documento. <?xml-stylesheet href="hoja1.css" type="text/css"?>

Fig. 10. Visualización de la agenda en el navegador aplicando la CCS de la Fig. 9. Para obtener mayor información de las propiedades específicas del estándar, se pude consultar en http://www.w3.org/tr/rec-css2/css2.pdf XSL XSL describe la jerarquía del documento de origen, la del documento resultante y cómo transformar uno en el otro. El elemento principal es stylesheet. Dado que la hoja de estilo contiene elementos de diferentes documentos se utiliza el espacio de nombres para organizarlos. En el código siguiente el espacio xsl se utiliza para el vocabulario XSL y el espacio de nombre del documento resultante es el predeterminado de HTML. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0" xmlns="http://www.w3.org/tr/rec-html40"> <xsl:output method="html"/> Para explicar las hojas de estilo XSL se trabajará con el siguiente ejemplo. Es una DTD que recoge la estructura de un artículo, ver Fig.11. <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="articulo.xsl"?> <!DOCTYPE articulo [

<!ELEMENT titulo (#PCDATA)> <!ELEMENT fecha (#PCDATA)> <!ELEMENT copyright (#PCDATA)> <!ELEMENT palabras-clave (#PCDATA)> <!ELEMENT url (#PCDATA)> <!ATTLIST url protocolo CDATA #REQUIRED> <!ELEMENT parrafo (#PCDATA url)*> <!ELEMENT epigrafe (#PCDATA)> <!ELEMENT seccion ((epigrafe)?,(parrafo)*)> <!ELEMENT articulo (titulo,fecha,copyright,palabras-clave,(seccion)+)> ]> <articulo> <titulo> TITULO: Uso de hojas de estilo </titulo> <fecha> 1 de octubre 2002 </fecha> <copyright> Marta Zorrilla </copyright> <palabras-clave>xml, hojas de estilo, XSL</palabras-clave> <seccion><epigrafe>xsl</epigrafe> <parrafo>una hoja de estilo XLS es un conjunto de normas que especifican como dar formato a los elementos de un documento XML.</parrafo> <parrafo>estas normas no sólo permiten dar formato sino también agregar elementos específicamente, generar material a partir de otro, presentar información con un nivel adecuado de detalles, alternar entre diferentes DTDs o distintas versiones de las mismas y transformar documentos XML a HTML. </parrafo></seccion> <seccion><epigrafe>flexibilidad de las hojas de estilo </epigrafe> <parrafo>las hojas de estilo están separadas de los documentos. Por ello una hoja de estilo puede ser compartida por varios documentos y un documento se puede presentar con diferente formato al cambiar su hoja de estilo. Para más información, vaya a <url protocolo="_blank">http://www.w3.org/style</url> </parrafo></seccion> <seccion><parrafo> Envíe sugerencias a <url protocolo="mailto">zorrillm@unican.es</url> </parrafo></seccion> </articulo> Fig. 11. Ejemplo de Documento XML con DTD artículo interna.

Con la hoja de estilos que a continuación se presenta, Fig. 12, se quiere formatear el documento XML y generar la tabla de contenidos a partir de la información del mismo. <!DOCTYPE xls:stylesheet [ ]> <!ENTITY sim-copy " "> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0" xmlns="http://www.w3.org/tr/rec-html40"> <xsl:output method="html"/> <xsl:template match="/"> <HTML> <head> <title> Artículo XML </title> <meta name ="palabras-clave"> <xsl:attribute name="content"> <xsl:value-of select="articulo/palabras-clave"/>, </xsl:attribute> </meta> </head> <body> <P><B> Tabla de contenido </B></P> <UL> <xsl:for-each select="articulo/seccion/epigrafe"> <LI><A> <xsl:attribute name="href"> <xsl:value-of select="generate-id()"/> </xsl:attribute> <xsl:value-of select="."/> </A></LI> </xsl:for-each> </UL> <xsl:apply-templates/> <HR ALIGN="CENTER"> </HR> <P>Copyright &sim-copy; <xsl:value-of select="articulo/copyright"/> </P> </body> </HTML>

</xsl:template> <xsl:template match="seccion/epigrafe"> <P><I><U> <xsl:apply-templates/> </U></I> </P> </xsl:template> <xsl:template match="articulo/titulo"> <HR ALIGN="CENTER"> </HR> <P><B> <font size="12"> <xsl:apply-templates/></font> </B> </P> </xsl:template> <xsl:template match="url"> <A target="_blank"><xsl:attribute name="href"> <xsl:apply-templates/> </xsl:attribute> <xsl:apply-templates/> </A> </xsl:template> <xsl:template match="url[@protocolo='mailto']"> <A> <xsl:attribute name="href">mailto:<xsl:apply-templates/> </xsl:attribute> <xsl:apply-templates/> </A> </xsl:template> <xsl:template match="parrafo"> </xsl:template> <P> <xsl:apply-templates/> </P> <xsl:template match="fecha palabras-clave copyright"/> </xsl:stylesheet> Fig. 12. Hoja de estilo para la DTD de artículo.

La hoja de estilo se puede considerar como una plantilla. En una plantilla se distinguen: el parámetro match, que es la ruta de acceso al elemento en la jerarquía; y, el contenido de la plantilla, que lista los elementos por insertar en la jerarquía resultante. La ruta de acceso es similar a la de los archivos. Arranca de la raíz ( / ). El procesador XML cargará al documento de origen haciendo coincidir al nodo en curso con la plantilla. Para seguir fácilmente el modo de funcionar se muestra en la Fig. 13 el árbol de elementos del DTD artículo. Cuando el procesador se encuentra <xsl:applytemplates/> se mueve al nodo secundario del nodo en curso y hace corresponder una plantilla. En el ejemplo que a continuación se presenta el procesador realizará el siguiente camino: busca la plantilla que coincida con la raíz, luego se mueve al nodo articulo. Sigue con el título, fecha, palabras-clave y copyright donde las tres últimas no generan datos en la jerarquía resultante. Después analizará la seccion que coincide con plantilla predeterminada y pasará a analizar epígrafe. Terminará con el parrafo dando mayor prioridad a url con protocolo respecto a la url. Fig. 13. Árbol de elementos de la DTD Articulo La siguiente plantilla formateará como párrafo en cursiva y subrayado los epígrafes al transformarlo en HTML. <xsl:template match="seccion/epigrafe"> </xsl:template> <P><I><U> <xsl:apply-templates/> </U></I> </P>

La plantilla, que se presenta a continuación, sólo se aplica a las url con el atributo mailto. Esta genera una referencia a la dirección de correo. <xsl:template match="url[protocolo='mailto']"> <A> <xsl:attribute name="href">mailto:<xsl:apply-templates/> </xsl:attribute> <xsl:apply-templates/> </A> </xsl:template> La plantilla adjunta hará que no se muestre la fecha y las palabras clave. <xsl:template match="fecha palabras-clave copyright"/> En la siguiente tabla se listan otros elementos XSL que calculan nodos en la jerarquía: xsl:element Genera un elemento con un nombre calculado xsl:attribute Genera un atributo con un nombre calculado xsl:attribute-set Combina adecuadamente varios xsl:atributes xsl:text Genera un nodo text xsl:processing-instruction Genera una instrucción de procesamiento xsl:comment Genera un comentario xsl:copy Copia al nodo en curso xsl:value-of Calcula el texto al obtenerlo de la jerarquía origen o mediante la inserción de una variable xsl:if xsl:choose xsl:number Instancia su contenido si la expresión es verdadera Selecciona los elementos por instanciar entre las alternativas posibles Genera un número con formato En el ejemplo utilizado se hace uso del elemento xsl:value-of para obtener las palabras clave y escribirlas como la lista de valores del atributo CONTENT del tag META de HTML: <meta name ="palabras-clave"> <xsl:attribute name="content"> <xsl:value-of select="articulo/palabras-clave"/> </xsl:attribute> </meta>

Para realizar un bucle por los elementos se utiliza xsl:for-each, donde el elemento en curso se selecciona con. : <UL> <xsl:for-each select="articulo/seccion/epigrafe"> <LI><A> </UL> <xsl:attribute name="href"> <xsl:value-of select="generate-id()"/> </xsl:attribute> <xsl:value-of select="."/> </A></LI> </xsl:for-each> En la Fig. 14 se presenta el fichero HTML generado con la hoja de estilo de la Fig.12 y el fichero XML de la Fig. 11. <BASE href="file://c:\documents and Settings\Marta\Mis documentos\marta\pruebas XML\base.url"/> <HTML xmlns="http://www.w3.org/tr/rec-html40"> <head><meta http-equiv="content-type" content="text/html"> <title> ArtÃculo XML </title> <meta name="palabras-clave" CONTENT="XML, hojas de estilo, XSL,"> </head> <body> <P><B> Tabla de contenido </B></P> <UL><LI><A HREF="id25CE470">XSL</A></LI> <LI><A HREF="id2796100">Flexibilidad de las hojas de estilo </A></LI> </UL> <P><B> TITULO: Uso de hojas de estilo </B></P> <P> EnvÃe sugerencias a <A HREF="mailto:zorrillm@unican.es"> zorrillm@unican.es</a> </P> <P><I>XSL</I></P> <P>Una hoja de estilo XLS es un conjunto de normas que especifican como dar formato a los elementos de un documento XML.</P> <P>Estas normas no sã³lo permiten dar formato sino tambiã n agregar elementos especãficamente, generar material a partir de otro, presentar informaciã³n con un nivel adecuado de detalles,

alternar entre diferentes DTDs o distintas versiones de las mismas y transformar documentos XML a HTML. </P> <P><I>Flexibilidad de las hojas de estilo </I></P> <P>Las hojas de estilo estã n separadas de los documentos. Por ello una hoja de estilo puede ser compartida por varios documentos y un documento se puede presentar con diferente formato al cambiar su hoja de estilo. Para mã s informaciã³n, vaya a <A target="_blank" HREF="http://www.w3.org/Style">http://www.w3.org/Style</A> </P> <P>Copyright  Marta Zorrilla </P></body></HTML> Fig. 14. Fichero HTML generado con la hoja de estilo de la Fig.12 y el fichero XML de la Fig. 11. NOTA: para visualizar correctamente el fichero articulo.xml se requiere Internet Explorer 5.5 o Netscape 6.0 o superior. Si al mismo texto le convertimos en fichero de texto en vez de HTML, usaremos la plantilla siguiente: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="text"/> <xsl:template match="seccion/epigrafe"> <xsl:text>*** </xsl:text> <xsl:apply-templates/> <xsl:text> ***</xsl:text> </xsl:template> <xsl:template match="articulo/titulo"> <xsl:text>=== </xsl:text> <xsl:apply-templates/> <xsl:text> ===</xsl:text> </xsl:template> <xsl:template match="url"> <xsl:text>[ </xsl:text> <xsl:apply-templates/> <xsl:text> ]</xsl:text>

</xsl:template> <xsl:template match="parrafo"> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet> <xsl:apply-templates/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="fecha palabras-clave copyright"/> </xsl:stylesheet> y tendremos el resultado:

Otros estándares relacionados DOM (Document Object Model) DOM es un estándar dew3c que define un conjunto de objetos e interfaces que se pueden utilizar para interrogar y manipular los contenidos de un documento XML. DOM es independiente de plataformas o lenguajes de programación específicos. Es un modelo de objetos que trata al documento XML como un árbol de nodos. Se puede utilizar DOM para realizar las siguientes tareas:! Construir y recorrer el árbol XML.! Conseguir información sobre los elementos, atributos, comentarios, instrucciones de procesamiento o textos del documento XML.! Crear nuevos elementos, atributos, comentarios, instrucciones de procesamiento o textos en el documento XML.! Crear un nuevo documento XML.! Examinar un documento XML para obtener información de su DTD o Schema. Es una interfaz basada en objetos: se comunica con la aplicación mediante la creación explícita de un árbol de objetos en memoria. Este árbol es un mapa exacto del árbol de elementos existentes en el archivo XML. Editores y SGBD están también adoptando esta interfaz. Para aplicaciones que no están tan centradas en XML, una interfaz basada en objetos es menos atractiva. Para estas aplicaciones es mejor cargar directamente el documento en su estructura de datos (interfaz basada en eventos). Esta interfaz es más compleja, permite realizar un mayor control y requiere menos recursos (no árbol en memoria); actúa lanzando eventos para cada elemento que se encuentra. El analizador (parser) es el software ubicado entre la aplicación y los archivos XML. Su objetivo es aislar al desarrollador de las complejidades de la sintaxis XML. Schemas Una DTD especifica únicamente la estructura del fichero XML: los nombres de los elementos, atributos, entidades que puede usar y cómo usarlo. DTD está diseñado para ser usado en documentos de texto tradicional, no de datos tabulares, no existe el concepto de tipo de dato. Schema es el medio para especificar el contenido del elemento en términos de tipos de datos. Están escritos como ficheros XML. Los Schemas están relacionados con aplicaciones estilo bases de datos donde el contenido del elemento requiere validación. Referencias 1. Albert Delgado. Microsoft SQL Server 2000. Prentice may. 2001.

2. Brett McLaughlin. Java and XML. O Reilly. 2000. 3. Marchal, Benoît. XML con ejemplos. Pearson Educación, México, 2001. ISBN: 970-26-0163-0 4. St. Laurent and Biggar. Inside XML DTDs. Application development. McGraw- Hill. 1999. 5.