mi xml

Download Mi XML

If you can't read please download the document

Upload: webburgos

Post on 13-Jun-2015

288 views

Category:

Documents


6 download

TRANSCRIPT

EXPLICAR HERRAMIENTAS COMO JBUILDE, VISUAL STUDIO.NET,XMLEditPro para crear XML.DTD XML Chema,etc.Indice:

Hojas de EstiloCSS Formato conXLS LenguajeXPATH Manual DTDManual Lo Que Falta B.Datos_ASP_XML XMLyJavaScript

mi

XML

Nota: En este color poco Importante. XML junto con otras siglas hablan de otra manera de gestionar la informacin por medio de la informtica. A los que ya somos viejos ,en esto, nos recuerda a un fichero de texto secuencial formateado. Pero va mucho mas all. Esta tecnologa adems de guardar informacin nos permite: Almacenar la informacin con un formato determinado Verificar que el documento esta correctamente construido Verificar que los datos contenidos en el fichero son correctos respecto a un esquema predefinido por medio de un DDT o Esquema XML. Recorrer un documento para acceder a los datos del fichero de forma secuencial o aleatoria. Transformacin de los datos. Por ejemplo generar un documento HTML a partir de un documento XML. Y mucho mas ............. Esquema de un fichero XML. Cabecera Todos los documentos XML deben comenzar con un encabezado, que en su forma ms simple se presenta como: Ahora bien, este codigo no ser aceptado por ningn procesador de XML, ya que se requiere siempre la identificacin de la versin de XML a la cual pertenece el documento. Para ello, agregamos el atributo version. Como vemos, un atributo se define escribiendo el nombre de la variable (en este caso 'version'), un signo igual = y el valor de la variable, entre comillas simples o dobles

El encabezado puede tener otros dos atributos, los cuales por lo general son omitidos. El primero es encoding, el cual determina el tipo de codificacin del documento, importante para la interpretacin de los caracteres segn la lengua, lo cual es especialmente importante en lenguajes como el japons. Los conjuntos ms utilizados para el lenguaje espaol son el ISO-8859-1 y el UTF-8. El segundo atributo es standalone, el cual indica si se necesita un documento externo (DTD o XML Schema) para definir la estructura del documento; puede adoptar los valores yes o no . Tendr valor yes cuando utilicemos una DTD intena y no cuando utilicemos una DRD conntenida en un fichero externo.

Si bien el encabezado puede contener ms objetos, para la comprensin cabal de stos es necesario entender, primero, cual es la composicin del cuerpo de un documento XML. Por tanto, la descripcin de los elementos faltantes se realizar en secciones posteriores

1

Ejemplo de cabecera: Cuerpo Dentro del detalle tambin se puede incluir un elemento de tipo DOCTYPE que se utiliza para asegurar que el documento XML este bien construido.

El cuerpo de un documento XML est formado por el contenido en s del documento, el cual se divide en texto y marcado. El marcado, a su vez, se divide en elementos, atributos, comentarios, referencia a entidades e instrucciones de proceso. A continuacin, presentamos un ejemplo tpico de cuerpo XML Cuerpo XMLEjemplo Mi libro Capitulo 1 Capitulo 2

ElementosLos elementos son los objetos esenciales de un documento XML. Los elementos pueden contener otros tipos de objetos, incluyendo a otros elementos. Como vemos en el ejemplo, los elementos se definen con dos etiquetas (tags), la primera sealando el inicio del elemento, con la nomenclatura y la segunda sealando el trmino, de la forma o y Un elemento vlido tambin es Si bien en HTML se puede omitir la etiqueta de cierre, en XML eso no es posible. Si se desea sealar que un elemento est vaco, se puede utilizar la forma abreviada . Adems, es importante mantener la correcta anidacin de los elementos, o sea, que la etiqueta de cierre de un elemento no se encuentre despus del cierre del elemento que lo contiene.

2

Por ltimo, es necesario destacar que un documento XML debe poseer un elemento, el cual es denominado raz, que contenga a todos los otros. En el ejemplo este elemento es ..... . Ejemplo 2.2. Uso correcto e incorrecto del elemento raz Uso correcto Este es el titulo

Uso incorrecto Este es el titulo Este es el titulo del segundo libro

AtributosLos elementos son la unidad bsica del XML y es posible utilizar slo este tipo de objetos para definir un documento, pero si tenemos una situacin como la siguiente computador 50 HP 5100 Descripcion HP 5100 computador 60 HP 6100 Descripcion HP 6100 Salida en IE: - - computador 50 HP 5100 Descripcion HP 5100 - computador 60

3

HP 6100 Descripcion HP 6100

es bastante obvio que los elementos tipo o id son carcteristicas del item, ms que objetos o entes propiamente tales. Para este y otros casos, W3C defini los atributos, que son objetos que definen las propiedades de un elemento dado. El formato de un atributo esnombre_atributo = "valor_atributo"

, permitindose el uso de comillas simples o dobles alrededor del valor del atributo. Nuestro cdigo anterior quedara, entonces, del siguiente modo: Descripcion HP 5100 Descripcion HP 6100 Se visualizar con IE como: - Descripcion HP 5100 Descripcion HP 6100

ComentariosMuchas veces, especialmente si el cdigo crece mucho, es necesario colocar algn tipo de aviso dentro del documento para recordar para que se serva un determinado elemento, o para documentar la falta de un datos, etc. Para esos casos, se pueden agregar comentarios dentro del cdigo, los cuales no sern considerados por el procesador de XML. Este objeto tiene la estructura

Ejemplo 2.3. Uso de comentarios Nombre Falso

4

Texto y entidadesCmo se habr percatado por los ejemplos anteriores, dentro de los elementos se puede incluir o no texto. Es importante considerar que a diferencia de HTML, se considera relevante todo carcter de espacio que se utilice. Por ejemplo:Nombre

es considerado distinto a Nombre y el procesador de XML debe tomar en cuenta ese hecho, para eliminar los espacios o los saltos de lnea, si es necesario. Otro factor a considerar es que, dependiendo del procesador y de la codificacin utilizada, existen ciertos carcteres que no pueden ser ingresados tal cual, como los signos . Para ello, existen dos alternativas: Referencia a Entidades Las referencias a entidades son objetos que representan a otros. Poseen la estructura:&nombre_entidad;

Por ejemplo, el signo < es representado por la entidad > Mayor que Herramientas como & & Ampersand Studio Net, ' ' Comilla simple Visual XMLEditPro v2.0 y otras " " Comilla doble nos van a ser de gran ayuda a la hora de crear los archivos xml, aunque lo mas normal es que los generemos de forma dinmica mediante aplicaciones construidas en Java o .NET ,pero eso vendr mas tarde. Veamos un par de ejemplos de cdigo xml validado a partir de DTD utilizando un programa escrito en VBSCRIPT. Dos formas de hacer lo mismo: Programa que valida los datos programado con VBScriptWScript.Echo "Hola" Set DocXML = WScript.CreateObject("Microsoft.XMLDOM") DocXML.validateOnParse=true if Not DocXML.Load("libro.xml") then Msgbox "Hay erores" & DocXML.url else Msgbox "El documento" & DocXML.url & " es correcto"

5

end if Grabar el cdigo en un fichero con la extensin .vbs y hacer doble clic sobre el fichero. BUSCAR UNA HERRAMIENTA PARECIDA PARA xsd (XML SHEMA)

con DTD externa Mi libro Capitulo 1 Capitulo 2 DTD grabada en un fichero libro.DTD

con DTD interna ]> Mi libro Capitulo 1 Capitulo 2 Como vemos construir un documento XML es fcil. Para ver que su estructura esta correctamente formad bastar con visualizarlo con Internet Explorer que generar un error en caso de no ser as. Peri para validar los datos tendremos que generar ficheros de validacin. Podemos utilizar dos tcnicas DTD o XSD(XML Shema). Para cualquiera de estas contamos con herramientas como Jbulder X(genera DTD a partir de XML), Eclipse y NetBeans 4.1 generan tanto DTD como XSD. Y como

6

herramienta de Microsoft generar DTD y XSD.

Visual

Studio

.net

tambin

nos

permite

Por lo tanto crearemos un fichero XML bsico y con una de estas herramientas generaremos el fichero DTD o XSD. Ejemplo de un fiero XMl y XSD

Fichero net.xml t1 a1 t2 a2 a2 a2 t21 a21 t22 a22

Fichero net.xsd 7

Resumiendo: El fichero XML contiene los datos. DTD y XSD son ficheros que contienen un diccionario de datos a partir de los cuales podremos validar la informacin contenida en un fichero XML. Saltar a manual DTD Manual

Como dar formato a documentos XMLLa informacin contenida en un documento/fichero xml es bastante fcil de entender para cualquier persona y utilizando DOM, Xpath y otras tecnologas tambin es de fcil acceso utilizando la informtica. La pega esta a la hora de presentar los datos, en pantalla o un informe impreso, ya que habr que separarlos de la etiquetas que los definen. Para ello tendremos que transformarlos en otro formato como pudieran ser HTML y PDF. Para obtener HTML podemos utilizar o bien hojas de estilo o XSL.

Comencemos por las Hojas de Estilo . Se supone que ya las hemos estudiado por lo que nos basaremos en un ejemplo de cmo utilizarlas con XML. Fichero xml que utiliza css:

2005103 1 Configuracin del Aula de trabajo Actividades de Tutora.:FCTNormas bsicas de comportamientoActividades de Evaluacin para la asignatura. 2005104 1 Configuracin del Aula de trabajo Creacin de particiones en los ordenadores e instalacin de los distintos sistema operativos necesarios para el desarrollo de los dos mdulos que se van a impartir en el aula.Instalacin de utilidades. Paquete ofimtico 2005105 1 Configuracin del Aula de trabajo Seguimos con la instalacin. 2005106 1

8

Java Descarga por Internet del entorno de desarrollo JAVA e instalacin del mismo en los ordenadores. Tambin se instalan algunos programas para el desarrollo de programas JAVA como PCGRASP y BLUEJExplicacin de los conceptos bsicos de Java.ClasesHerenciaComposicinPolimorfismoCampos MiembroTipos PrimitivosConstructoresProcedimientos y funcionesPasos de parmetrosProcedimientos staticFuncin main() 2005107 1 Java Se realizan ejemplos por parte del profesor sobre cada uno de los apartados tratados en la exposicin terica ejecutndoles en el ordenador.Se les propone a los alumnos trabajos para realizar en casa durante el fin de semana. 2005108 1 Java Sabado

Fichero estilo.css. nada {} fecha{FONT-FAMILY: Georgia ;FONT-SIZE: 16 Pt ; display: block} evaluacion{ display: block; color: blue} tema{ FONT-FAMILY: Arial Black ;color:green ;display: block} descripcion { FONT-FAMILY: Arial Narrow ;FONT-SIZE: 10 Pt ;display: block} El resultado obtenido al visualizarlo con Internet Explorer es:

9

Vemos como afortunadamente un conocimiento que ya poseamos nos va a servir para dar formato a documentos HTML y XML. Veamos ahora XSL.

Formato con XSL.Css no permite ejecutar operaciones lgicas como if, bucles , etc que nos permitan seleccionar que parte de los datos queremos imprimir o visualizar. XSL consiste el la obtencin de un documento HTML, XHTML, texto plano ,otro documento XML , etc mediante la utilizacin del lenguaje XSLT. La utilizacin de XSL tambin es conocida como hoja de estilo , ya que en cierto modo tiene la misma funcionalidad que CSS. Veamos como trabaja este lenguaje. Lo primero para poder acceder a un determinado dato se ha de crear una plantilla (template)que lo identifique. Ejemplo: Fichero xml Aprendiendo XML Aprendiendo XSL Aprendiendo CSS Fichero xsl Cuando por medio del navegador visualicemos el fichero xml utilizando el firchero xsl obtendremos el siguiente cdigo html: Aprendiendo XML Aprendiendo XSL Aprendiendo CSS Utilizamos para obtener y dar formatos a todos los datos identificados por la plantilla que hemos creado a partir de la etiqueta . obtiene los datos de las etiquetas xml y las genera dentro del documento HTML en la posicin indicada dentro de la plantillas. Como vemos combinamos cdigo del lenguaje XSLT y cdigo HTML (aunque podra ser otro, como el necesario para generar PDFs). Veamos ahora como indicar en un fichero XML que vamos a utilizar un fichero XSL para generar la presentacin de sus datos. Ejemplo:

2005103 1 Configuracin del Aula de trabajo Actividades de Tutora.:FCTNormas bsicas de 2005104 1 Configuracin del Aula de trabajo

10

Creacin de particiones en los ordenadores 2005105 1 Configuracin del Aula de trabajo Seguimos con la instalacin. 2005106 1 Java Descarga por Internet del entorno de desarrollo 2005107 1 Java Se realizan ejemplos por parte del profesor 2005108 1 Java Sabado

Veamos ahora el fichero XSL utilizado: Cuaderno de Actividades Diseo y Realizacin de Servicios de Presentacin en Entornos Grficos Fecha Eval. Tema Actividad

11

El documento XML se visualiza como:

Saquemos del cdigo las instrucciones XSLT

Un fichero XSL tambin es un fichero XML que ha de estar bien formado. Lo indicamos con esta instruccin.

Define que es un fichero de tipo Hoja de Estilo XSL

Crear una plantilla que identifica el comienzo del documento que se va a generar. Esta plantilla se ejecuta de forma automtica . En ella podemos incluir cdigo HTML o de otro tipo y tambin nos sirve para ejecutar otra plantilla.Aqui aadimos el codigo HTML para la cabecera del documento (body , ) Ms cdigo html

Ejecuta la plantilla actividades Final de una plantilla.

Crea la plantilla correspondiente a la etiqueta actividades del fichero xml. Bucle que recorrer todas las etiquetas identificadas como cuaderno.

Obtiene el dato fecha de la etiqueta fecha que esta contenida en la etiqueta cuaderno y lo inserta dentro de una celda del codigo HTML .

12

Final del bucle Final de la plantilla inicial del documento. Final del documento XSL.

Tambin se pueden combinar hojas de estilo CSS y XSLT . Veamos un ejemplo: Fichero XML 2005103 1 Configuracin del Aula de trabajo Actividades de Tutora.:FCTNormas bsicas de comportamientoActividades de Evaluacin para la asignatura. 2005104 1 Configuracin del Aula de trabajo Creacin de particiones en los ordenadores e instalacin de los distintos sistema operativos necesarios para el desarrollo de los dos mdulos que se van a impartir en el aula.Instalacin de utilidades. Paquete ofimtico .f{FONT-FAMILY: Georgia ;FONT-SIZE: 16 Pt ; display: block} .e{ display: block; color: blue} .t{ FONT-FAMILY: Arial Black ;color:green ;display: block} .d{ FONT-FAMILY: Arial Narrow ;FONT-SIZE: 10 Pt ;display: block} Cuaderno de Actividades Diseo y Realizacin de Servicios de Presentacin en Entornos Grficos Fecha Eval. Tema Actividad

Fichero XSL

13

El documento XML se visualiza como

: Vamos a realizar un estudio ms detallado de XSLT. Creacin de plantillas: Para crear una plantilla La plantilla identifica a una parte del documento sobre la que se va actuar. Para indicar esa parte se utiliza otro lenguaje conocido como XPATH que ya conoceremos. Su forma mas simple ser el nombre de un elemento como . La instruccin indica la raz (inicio) del documento. La platilla raz se ejecuta de forma automtica y desde esta podremos ejecutar el resto de las plantillas que creemos por medio de la instruccin . Indicamos la plantilla o elementos(indicados mediante XPATH) sobre los que va actuar. Para obtener un dato de un elemento utilizamos la instruccin : Obtiene el dato contenido en el elemento indicado . En este caso obtiene todos los datos contenidos en el elemento Descripcin. 0 Obtiene el dato contenido en el elemento en el que en ese momento estemos posicionados. Por ejemplo al ejecutar un bucle. Bucles: Para crear un bucle utilizaremos la siguiente instruccin. El ejemplo recorre todos los elementos que formen parte de la estructura del rbol indicado /Apuntes/Tema

14

Bucle que ordenada: xml

C/La Huerta s/n 1234567 09400 C/Las Amapolas, 19 43545 09500 Avda. Principal 10 , 2. S 345345 09200 Pza. Mediterraneo ,14 3. I 1234567 09400

xsl.

Agenda

Condiciones Con if Con chose

15

XPATH

Es un lenguaje que nos va a permitir localizar los componentes especficos de un documento XML a partir de la creacin de una estructura en rbol. Una vez obtenida dicha estructura se podra realizar funciones a modo de bases de datos documentales ya que nos permitir realizar operaciones de bsqueda, obtener los fragmentos de informacin que deseemos y finalmente obtener el formato de presentacin deseado transformando el documento XML en un documento de otro tipo (HTML,..). Para acceder a un elemento tendremos que indicar la trayectoria de bsqueda . La trayectoria puede ser absoluta y comienza en el nodo raz / o relativa que carece de este nodo raz. Ejemplo partiendo del siguiente documento XML: XML es una tecno.... Apuntes XML.. Crea ... Utilizando XML Para .. XPATH XPATH es una tecno.... Apuntes XPATH.. Crea ... A partir de XPATH.. Para .. Absoluta para el elemento E2 /Apuntes/Tema/Ejercicios/E2 Relativa para E1 suponiendo que estamos en el elemento Tema Ejercicios/E1 Cuando seleccionamos el elemento E1 no seleccionamos uno de ellos sino todos los que estn contenidos en el documento XML Utilizando XML A partir de XPATH.. Para recorrer todos ellos utilizamos 16

Tambin lo podemos hacer utilizando templates de la siguiente forma: Si queremos los elementos E1 y E2utilizamos la orden: Si queremos elementos Descripcin, E1 y E2utilizamos la orden: Por medio de la barra vamos bajando por el rbol y accediendo a los distintos elementos o construyendo los distintos templates . Pero tambin podemos acceder a un determinado grupo de elementos sin necesidad de especificar todo el camino de bsqueda utilizando las 2 barras //. Ejemplo: Nos situamos en la raz por medio de un template y recorremos todos los ejemplos E1 y E2 sin indicar el camino completo de la estructura.

Ejemplo con muchas opciones

_____________________ _____________________

17

_____________________ _____________________ _____________________ _____________________ _____________________ _____________________ _____________________ _____________________ 18

_____________________ _____________________

Crea ... A partir de XPATH.. Para XPATH..

_____________________ _____________________ _____________________ _____________________ El anterior al ultimo. _____________________ _____________________ NO FUNCIONA ESTA OPCION id() Funciona pero hay que trabajarlo mas _____________________ XML es una tecno.... Apuntes XML.. Realiza los Siguientes Ejercicios de XML Utilizando XML Para XML.. XPATH es una tecno.... Apuntes XPATH.. Realiza los Siguientes Ejercicios de XPATH A partir de XPATH.. Para XPATH..

20

--> Vemoslo con ejemplos: Fichero xml empleado:

Trabajo con Variables en XPATH

C/La Huerta s/n 1234567 09400 C/Las Amapolas, 19 43545 09500 Avda. Principal 10 , 2. S 345345 09200 Pza. Mediterraneo ,14 3. I 1234567 09400

Fichero xsl empleado:

Agenda

21

Define una variable y le asigna un dato

Visualiza una variable

Suma Edades : Define una variable y le asigna un dato

Visualiza una variable N.Personas : Operar con variables:

Edade Media :

Relacin de Funciones disponibles en XPATH Nodo o last() o position() o count(nodo elemento) o id(objeto) o name(nodo elemento) Cadena o string(objeto ) Devuelve una cadena o concat(string, string,string) Concatena una o mas cadenas o strats-with(string, string) Devuelve true si el primer string empieza con el segundo. o contains(string, string) Devuelve true si la segunda cadena esta contenida en la primera o substring-before(string, string) devuelve otra string con la parte de la primera cadena que aparece delante de lo que contiene la segunda o substring-before(string, string) devuelve otra string con la parte de la primera cadena que aparece al final de lo que contiene la segunda o substring(string,number n ,number n1) devuelve otra string con la parte de la primera cadena que comienza en n el n de caracteres indicados en n1. o String-length(string) devuelve el n de caracteres de la cadena o Normalize-espace(string) devuelve un string sin espacios al comienzo y al final de la misma. Booleanas o bolean(objeto) devuelve false si es 0 y true en caso contrario o not(bolean) devuelve lo contrario del valor utilizado en la funcin. o true() devuelve trae o false() devuelve false Numricas o number(objeto) convierte en un nmero

22

o sum(nodo) suma el valor de las cadenas numricas contenidas en los nodos del rbol seleccionados . o floor(number) devuelve el nmero entero ms grande que no es mayor que el argumento. Ejemplo 3.14 devuelve 3. o ceiling(number) devuelve el nmero entero ms pequeo que no es menor que el argumento. 3.14 devuelve 4. o round(number) Devuelve el nmero entero mas cercano al argumento. 3.14 devuelve 3. 3.52 devuelve 4. Relacin de Operadores disponibles en XPATH -,+,*,div,mod,and,or,|,=,=,!=,$(referencia de variable) Generar PDF

23

MANUAL DTD(http://php.apsique.com/xml/introduccion)Documentos XML vlidos: uso de DTD

Si escribimos un documento XML con las reglas expuestas en las dos secciones anteriores sin cometer errores, estaremos en presencia de un documento bien formado. Ahora bien, generalmente esto no basta para crear una aplicacin, ya que debemos limitar en mayor o menor medida el tipo de datos a ingresar. Por ejemplo, si tenemos una aplicacin de gua telfonica, un marcado como el siguiente sera, por decir lo menos, intil Juan Perez Salgado Muoz Negro Segunda personalidad

Como se puede observar, si bien el documento est bien formado, ya que el marcado est escrito correctamente, cuenta slo con un elemento raz y contiene carcteres presentes en la codificacin pre-establecida, presenta evidentes errores lgicos. Es evidente que no existen personas con ms dos apellidos y que una persona no puede estar contenida dentro de otra ni es una caracterstica de ella. Debe existir alguna forma de especificar restricciones sintcticas al marcado para definir su estructura, o sea, que objetos se aceptarn en el documento, en que cantidad y en que orden. El documento que se encarga de realizar esta especificacin se llama Documento de Definicin de Tipo (DTD, por sus sigla en ingls). Esta descripcin permite que cada XML porte una descripcin de su propia estructura. Adems, grupos independientes pueden acordar el uso de un DTD comn para intercambiar datos y verificar que los documentos propios como ajenos tengan la estructura adecuada, o sea, sean vlidos. Con lo expuesto anteriormente, es tiempo de definir los conceptos de documento vlidos y documento bien formado. Documento bien formado Es aquel que responde a las caractersticas de un documento XML tal como la especifica la recomendacin W3C, no existiendo limitaciones sobre el nmero o tipo de contenidos. Esto implica, entre otras cosas:

24

Ocupar slo carcteres aceptados por la codificacin del documento, la cual fue definida en el atributo encoding del encabezado La estructura de elementos es estrictamente jerrquica: existe slo un elemento raz y todos los tags estn correctamente anidados, no existiendo superposiciones de elementos. Los nombres de elementos estn compuestos por letras, nmeros y los signos -_.:, siendo importante la presencia o no de caracteres con mayscula. Los valores de los atributos van cerrados entre comillas simples o dobles

Documento vlido Es aquel que, estando bien formado, respeta las restricciones establecidas por una definicin externa, correspondienta sta a un documento DTD o XML Schema, en cuanto a los elementos y atributos aceptados, su cantidad y en el orden en el cual pueden aparecer.

Elemento DOCTYPEComo vimos, un documento vlido debe debe hacer a una definicin del tipo, cantidad y orden de los contenidos considerados pertinentes. Si bien existen dos especificaciones para realizar esta labor, DTD y XML Schema, explicaremos el uso de la primera de estas forma, ya que es la ms antigua y comn. La referencia de un DTD se realiza por medio del elemento DOCTYPE, el cual ubica en el encabezado del documento, a continuacin de la instruccin . Dependiendo de la ubicacin del DTD, el elemento DOCTYPE adoptar dos formas Referencia externa La definicin del documento DTD se encuentra en un archivo distinto al XML. Ejemplo 2.5. Referencia externa a DTD

Como vemos, despus de

En este ejemplo, despus de

La primera nomenclatura se utiliza para asignar a un elemento una de las categoras genricas (ANY o (EMPTY) . La segunda, cuando se quiere definir de forma exacta el tipo y orden de elementos que puede incluir el elemento en cuestin Sintaxis bsica para definir elementos en DTD ANY Indica que el elemento puede contener cualquier tipo de contenido ]> Esto es un parrafo Fuera de parrafo

26

EMPTY Indica que el elemento no puede contener nada, o que es lo mismo, que es un elemento vaco

Secuencia de elementos Se define cual va a ser el orden y nmero de elementos permitidos. No se puede agregar otro contenido, aparte del definido. ]>

Datos de carcter El elemento slo contiene datos de carcter, y no elementos en su interior. Se representa por la expresin #PCDATA Este elemento slo permite ingresar texto, nada ms.

Sintaxis para definir orden y cantidad de elementos en un DTD Un slo elemento

El elemento mensaje debe presentarse una vez dentro del elemento nota Dos o ms elementos en una secuencia definida

El elemento persona debe contener los elementos nombres, apellido_paterno y apellido_materno, en ese mismo orden Presencia de una o ms apariciones del mismo elemento

27

El elemento jaura debe contener uno o ms elementos perro Presencia de cero o ms apariciones del mismo elemento

El elemento hijo puede presentarse 0, 1 o ms veces dentro del elemento persona. Presencia de cero o una aparicin del mismo elemento

El elemento apendice puede estar 1 vez o no estar dentro del elemento persona Presencia de elementos alternativos

El elemento vivienda puede contener uno de los siguientes elementos: casa,departamento o mediagua. Presencia de contenido mezclado ]> Este texto contiene texto libre, negritas, cursiva y ambos

Se puede tener datos de carcter y elementos mezclados dentro de un elemento padre, pero en la definicin deben sealarse como elementos alternativos (uso de |), y en modo * (0 o ms elementos aceptados). Uso de parntesis ]>

28

Se pueden agrupar distintas expresiones entre parntesis, para lograr detallados ajustes de orden y cantidad. En el ejemplo, tenemos que existe una definicin basada en orden de 4 elementos, siendo el primero y el tercero agrupaciones. En la primera agrupacin, vemos que se puede tener 0 o 1 titulo y a continuacin 0 o 1 titulo_breve, y todo esto puede o no estar antes de la introduccion. En la tercera agrupacin, se ha establecido que se pueden tener 0 o ms elementos de capitulo o seccion entre la introduccin y el glosario.

AtributosLos atributos de los elementos son declarados a travs de una instruccin ATTLIST

Tabla 2.2. Tipo de atributo para ATTLIST Valor CDATA Atributos enumerados (en1|en2|..) ID IDREF IDREFS NMTOKEN NMTOKENS ENTITY ENTITIES NOTATION xml: Explicacin El valor contiene datos de carcter. El valor del atributo corresponde a algunos de los enumerados en la lista El valor debe ser un ID nico El valor debe corresponder a un ID ya existente El valor es una lista ID ya existententes, separados por espacios El valor es un nombre XML vlido El valor es una lista de nombre XML vlidos, separados por espacios El valor es una entidad El valor es una lista de entidades, separadas por espacios El valor es el nombre de una notacin El valor es un valor predefinido de xml

Tabla 2.3. Valores por defecto para ATTLIST

29

Valor Explicacin valor El valor por defecto para el atributo #REQUIRED El atributo debe ser incluido en el elemento #IMPLIED El atributo no debe ser incluido El valor del atributo es fijo. No tiene mucha utilidad, excepto #FIXED valor cuando se altera una DTD para fijar un valor que antes era variable. Por ejemplo, si tenemos el elemento persona, podemos incluir el atributo nacionalidad. Si quisiesemos aceptar cualquier valor literal para esta variable, y fuese obligatario incluirla, su definicin sera

Si slo aceptaramos personas de nacionalidad chilena y argentina, siendo mayor el nmero de chilenos, podramos definir el atributo con una enumeracin, dejando como valor por defecto 'chilena'

Cmo realizar una explicacin de cada posibilidad sera bastante tedioso, as que a continuacin se presentar un ejemplo comentado, que muestra las formas ms usuales de definir atributos. Este ejemplo introduce, adems, el uso de un DTD externo para validad un documento XML. Ejemplo 2.7. Uso de ATTLISTcatalogo.dtd

Tipo de atributo: ID. El valor de este atributo para el documento debe ser nico. Tipo de atributo: CDATA. Se puede ingresar cualquier dato de carcter, o sea, texto que no sea marcado Tipo de atributo: IDREF. El valor del atributo debe corresponder un ID ya especificado. Tipo de atributo: IDREFS. El valor del atributo debe corresponder a uno o ms IDs ya especificados, separados por espacios.

30

Tipo de atributo: enumeracin. El valor del atributo debe corresponder a alguno de los especificados en la lista. Valor por defecto: #REQUIRED. Se requiere ingresar un valor para el atributo Valor por defecto: #IMPLIED. No se requiere ingresar un valor para el atributo Valor por defecto especfico. Si no se ingresa un valor, se utiliza el asignadocatalogo.xml General Libros de referencia Libros en circulacin Autor 1 Autor 2

SugerenciaSi se necesita definir ms de un atributo para un mismo elemento, se puede utilizar la misma sintaxis

Por ejemplo

EntidadesEl ltimo tipo de objeto a definir dentro de un DTD son las entidades, que como ya hemos sealado en la seccin Texto y entidades nos permiten representar carcteres no posibles de incluir como texto o cualquier otro tipo de texto. La sintaxis de definicin de una entidad es bastante simple, siendo

El uso ms importante de las entidades, aparte de permitir la representacin de caracteres, es la de incluir texto o marcado de manera estndar. Cuando se realiza una 31

referencia a una entidad, el procesador la reemplaza de forma literal por el contenido asignado como valor, el cual puede incluir marcado. Por ejemplo, en HTML existe la etiqueta , que con el atributo href nos permite hacer un link a una pgina. Por ejemplo:Google

Crea un link con el texto 'Google', dirigido a http://www.google.cl. Puede darse el caso que necesitemos ocupar repetidamente esa estructura en nuestro texto. Para evitar el trabajo de escribirlo una y otra vez, es posible crear una entidad &google;, que funcione como abreviatura de la expresin completa. Su DTD sera:

Entonces, si tenemos en nuestro textoA continuacin tendremos un link a google: &google;

El procesador reemplazar la entidad por su definicin y obtendremos:A continuacin tendremos un link a google: Google

Una variante de lo anterior es incluir el contenido de un archivo completo a travs de la entidad. La sintaxis para ellos es:

Por ejemplo, podemos dividir el contenido el contenido de un libro en tres archivos xml (capitulo_1.xml,capitulo_2.xml,capitulo_3.xml) e incluirlos dentro del archivo principal, definiendo tres entidades. ]> &capitulo_1; &capitulo_2; &capitulo_3;

Por ltimo, es posible utilizar las entidades para ahorrar trabajo en la creacin del DTD. Por ejemplo, si tenemos un atributo que es comn a muchas entidades, es posible crear una entidad que la represente. La sintaxis es bastante similar a la de una entidad comn

32

Por ejemplo, hemos visto en varios ejemplos que los identificadores obligatorios se crean siempre como ID #REQUIRED. Entonces, podemos resumir la definicin del DTD realizada en el ejemplo de uso de attlist usando entidades y el formato abreviado de definicin de atributos. Ejemplo 2.8. Uso de entidades para definir atributos

Final Manual //http://php.apsique.com/xml/introduccion/ Lo Que Falta Esquemas XML Enlazar documentos XML. XML Base y Xlink Consultas en XML:Xquery Manejo de documentos XML:DOM.

Comencemos a sacarle partido a todas estas tecnologas. Para ello vamos a crear una aplicacin WEB en ASP.net con la siguiente funcionalidad: Una pgina web que visualice un mapa con una seal en las calles en las que halla coches mal aparcados. . Pgina de inicio en HTML con un men de opciones - Carga de infracciones - Visualizar mapa.

33

Codigo ASP del men: Public Class WebForm1 Inherits System.Web.UI.Page #Region " Cdigo generado por el Diseador de Web Forms " 'El Diseador de Web Forms requiere esta llamada. Private Sub InitializeComponent() End Sub 'NOTA: el Diseador de Web Forms necesita la siguiente declaracin del marcador de posicin. 'No se debe eliminar o mover. Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: el Diseador de Web Forms requiere esta llamada de mtodo 'No la modifique con el editor de cdigo. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Introducir aqu el cdigo de usuario para inicializar la pgina End Sub End Class

. Pgina ASP de registro de las infracciones

34

Codigo asp. Imports System.Xml Imports System.Data Imports System Imports System.IO Public Class WebForm2 Inherits System.Web.UI.Page #Region " Cdigo generado por el Diseador de Web Forms " 'El Diseador de Web Forms requiere esta llamada. Private Sub InitializeComponent() End Sub Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents Label3 As System.Web.UI.WebControls.Label Protected WithEvents GrabarInfraccion As System.Web.UI.WebControls.Button Protected WithEvents NuevaInfraccion As System.Web.UI.WebControls.Button ' Protected WithEvents datos As System.Web.UI.WebControls.DataGrid Protected WithEvents errores As System.Web.UI.WebControls.TextBox Protected WithEvents ctcalle As System.Web.UI.WebControls.TextBox Protected WithEvents ctTipoInfraccion As System.Web.UI.WebControls.TextBox Protected WithEvents ctMatricula As System.Web.UI.WebControls.TextBox Protected WithEvents Anterior As System.Web.UI.WebControls.Button Protected WithEvents Siguiente As System.Web.UI.WebControls.Button Protected WithEvents control As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents Label4 As System.Web.UI.WebControls.Label Protected WithEvents esNuevo As System.Web.UI.WebControls.TextBox

35

Protected WithEvents Label5 As System.Web.UI.WebControls.Label Protected WithEvents Label6 As System.Web.UI.WebControls.Label Protected WithEvents listaCalles As System.Web.UI.WebControls.DropDownList Protected WithEvents SeleccionCalle As System.Web.UI.WebControls.Button Protected WithEvents Label7 As System.Web.UI.WebControls.Label Protected WithEvents Label8 As System.Web.UI.WebControls.Label Protected WithEvents ctposicionY As System.Web.UI.WebControls.TextBox Protected WithEvents ctposicionX As System.Web.UI.WebControls.TextBox 'NOTA: el Diseador de Web Forms necesita la siguiente declaracin del marcador de posicin. 'No se debe eliminar o mover. Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: el Diseador de Web Forms requiere esta llamada de mtodo 'No la modifique con el editor de cdigo. InitializeComponent() End Sub #End Region Dim iCiclo As Integer Dim nfCiclo As Integer Dim posicion As Integer Dim nuevo As Boolean Dim grabado As Boolean Dim yaestaba As Boolean ' Tablainfracciones Private Private Private Private Private calle As New DataColumn tipoInfraccion As New DataColumn matricula As New DataColumn posicionx As New DataColumn posiciony As New DataColumn

Dim infracciones As New DataTable("infracciones") Private clavePrimariaInfraccion(0) As DataColumn

Dim ds As New DataSet Dim Dim Dim Dim fila As DataRow filaYaestaba As DataRow i As Integer nf As Integer

36

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load grabado = False If File.Exists("D:\Inetpub\wwwroot\aparcamiento\infracciones.xml") Then ' MsgBox("EXISTE") Else Abrir_fichero() ' MsgBox("noEXISTE") creaDataset() End If nuevo = False End Sub Private Sub creaDataset() i = -1 nf = -1 iCiclo = -1 nfCiclo = -1

calle.DataType = System.Type.GetType("System.String") calle.MaxLength = 50 calle.Unique = False calle.ColumnName = "calle" tipoInfraccion.DataType = System.Type.GetType("System.String") tipoInfraccion.MaxLength = 70 tipoInfraccion.Unique = False tipoInfraccion.ColumnName = "tipoInfraccion" matricula.DataType = System.Type.GetType("System.String") matricula.Unique = True matricula.MaxLength = 15 matricula.ColumnName = "matricula" matricula.DataType = System.Type.GetType("System.String") matricula.Unique = False matricula.MaxLength = 4 matricula.ColumnName = "posicionx" matricula.DataType = System.Type.GetType("System.String") matricula.Unique = False matricula.MaxLength = 4 matricula.ColumnName = "posiciony" infracciones.Columns.Add(calle) infracciones.Columns.Add(tipoInfraccion) infracciones.Columns.Add(matricula) infracciones.Columns.Add(posicionx) infracciones.Columns.Add(posiciony) 'clavePrimariaInfraccion(0) = matricula 'infracciones.PrimaryKey = clavePrimariaInfraccion ds.Tables.Add(infracciones)

37

'

datos.DataSource = ds

End Sub Private Sub Abrir_fichero() Try nuevo = False ds.ReadXmlSchema("D:\Inetpub\wwwroot\aparcamiento\infracci ones.xml") ml") ds.ReadXml("D:\Inetpub\wwwroot\aparcamiento\infracciones.x ' datos.DataSource = ds 'MsgBox(ds.Tables.Count) 'MsgBox(ds.Tables(0).TableName) 'MsgBox(ds.Tables(0).Rows.Count()) ds.Tables(0).Clone() '////////////// matricula.DataType = System.Type.GetType("System.String") matricula.MaxLength = 15 matricula.Unique = True matricula.ColumnName = "matricula" 'ds.Tables(0).Columns.Add(cFecha) 'clavePrimariaInfraccion(0) = ds.Tables(0).Columns(2) 'ds.Tables(0).PrimaryKey = clavePrimariaInfraccion 'ds.Tables.Add(ds.Tables(0)) '//////////////// nf = ds.Tables(0).Rows.Count - 1 i = nf posicion = i 'infracciones = ds.Tables(0).Copy() 'datos.DataSource = ds.Tables(0).DefaultView ' datos.Visible = True ' datos.AllowSorting = True ctcalle.Text = ds.Tables(0).Rows(nf).Item(0) ctTipoInfraccion.Text = ds.Tables(0).Rows(nf).Item(1) ctMatricula.Text = ds.Tables(0).Rows(nf).Item(2) ctposicionX.Text = ds.Tables(0).Rows(nf).Item(3) ctposicionY.Text = ds.Tables(0).Rows(nf).Item(4) control.Text = nf

' Llenar listaCalles infracciones = ds.Tables(0) listaCalles.DataSource = infracciones listaCalles.DataTextField = "calle" listaCalles.DataValueField = "calle" listaCalles.DataBind() listaCalles.SelectedIndex = 0 Catch ex As Exception

38

errores.Text = "mal" & ex.StackTrace End Try End Sub Private Sub NuevaInfraccion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NuevaInfraccion.Click nuevo = True esNuevo.Text = True ctcalle.Text = "" ctTipoInfraccion.Text = "" ctposicionX.Text = "" ctposicionY.Text = "" ctMatricula.Text = "" End Sub Private Sub GrabarInfraccion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GrabarInfraccion.Click Dim nuevo As Boolean If Request.Form("esNuevo") = "" Then nuevo = False Else nuevo = Request.Form("esNuevo") End If Dim posicion As Integer posicion = Request.Form("control") Try If nuevo Then fila = ds.Tables(0).NewRow() If yaestaba = True Then fila = filaYaestaba End If End If If nuevo = False Then fila = ds.Tables(0).Rows(posicion) End If

fila("calle") = Request.Form("ctcalle") ' ctcalle.Text fila("tipoInfraccion") = Request.Form("ctTipoInfraccion") ' ctTipoInfraccion.Text fila("matricula") = Request.Form("ctMatricula") ' ctMatricula.Text fila("posicionX") = Request.Form("ctposicionX") fila("posiciony") = Request.Form("ctposicionY") If nuevo Then 'ds.Tables(0).Rows(posicion).Delete() ds.Tables(0).Rows.Add(fila)

39

End If ds.Tables(0).AcceptChanges() ' datos.DataSource = ds.Tables(0).DefaultView ds.AcceptChanges() ctcalle.Text = ds.Tables(0).Rows(0).Item(0) ctTipoInfraccion.Text = ds.Tables(0).Rows(0).Item(1) ctMatricula.Text = ds.Tables(0).Rows(0).Item(2) ctposicionX.Text = ds.Tables(0).Rows(0).Item(3) ctposicionY.Text = ds.Tables(0).Rows(0).Item(4) If nuevo Then i = i + 1 nf = nf + 1 End If Catch ex As Exception errores.Text = "Error grabacion" & vbCrLf & ex.Message & ex.StackTrace End Try Dim ficheroT As New System.IO.FileStream("D:\Inetpub\wwwroot\aparcamiento\infracciones.xml ", IO.FileMode.Create) ds.WriteXml(ficheroT, XmlWriteMode.WriteSchema) ficheroT.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles errores.TextChanged End Sub Private Sub Anterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Anterior.Click esNuevo.Text = False Dim ii As Integer Try ii = Request.Form("control") nuevo = If ii > i = Else i = End If False 0 Then ii - 1 0

control.Text = i posicion = i

40

ctcalle.Text = ds.Tables(0).Rows(i).Item(0) ctTipoInfraccion.Text = ds.Tables(0).Rows(i).Item(1) ctMatricula.Text = ds.Tables(0).Rows(i).Item(2) ctposicionX.Text = ds.Tables(0).Rows(i).Item(3) ctposicionY.Text = ds.Tables(0).Rows(i).Item(4) Catch ex As Exception errores.Text = "Anterior " End Try control.Text = i End Sub Private Sub Siguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Siguiente.Click esNuevo.Text = False Try nuevo = False Dim ii As Integer ii = Request.Form("Control") control.Text = ii ' If i < nf Then i = ii + 1 ' Else ' i = nf ' End If posicion = i ctcalle.Text = ds.Tables(0).Rows(i).Item(0) ctTipoInfraccion.Text = ds.Tables(0).Rows(i).Item(1) ctMatricula.Text = ds.Tables(0).Rows(i).Item(2) ctposicionX.Text = ds.Tables(0).Rows(i).Item(3) ctposicionY.Text = ds.Tables(0).Rows(i).Item(4) Catch errores.Text = "Siguiente" ' control.Text = ii End Try control.Text = i End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click control.Text = "" End Sub

Private Sub SeleccionCalle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SeleccionCalle.Click errores.Text = Request.Form("listaCalles") Dim j As Integer For j = 0 To ds.Tables(0).Rows.Count - 1 If ds.Tables(0).Rows(j).Item(0) = Request.Form("listaCalles").ToString Then ctcalle.Text = ds.Tables(0).Rows(j).Item(0) ctTipoInfraccion.Text = ds.Tables(0).Rows(j).Item(1) ctMatricula.Text = ds.Tables(0).Rows(j).Item(2)

41

Next End Sub End Class

ctposicionX.Text = ds.Tables(0).Rows(j).Item(3) ctposicionY.Text = ds.Tables(0).Rows(j).Item(4) End If

. Pgina html con JavaScript que visualiza las infracciones sobre en una imagen(mapa) fondo a partir de la informacin contenido en xml. Efectivamente desde JavaScript podemos leer un fichero xml utilizando DOM. Ejemplo:

Cdigo JavaScript que genera el mapa de infracciones. function visualiza() { var myXml, escribirNodos,nodoLenguaje; var nodoPadre,nombreNodo, display; myXml=document.all("writersXML").XMLDocument; escribirNodos=myXml.getElementsByTagName("posicionx"); var lineasx = new Array(escribirNodos.length); for(var i=0;i

Fichero xml con la informacin.

43

C.Amapola 1 bu-2783V 10 10 C.Ventisca 2 bu-2783z 150 150 C.la huerta 3 bu-2783x 200 200 C.Cebolletas 3 4 bu-2783h 250 250 222222 2222222222 22222 300 300 66666666 666666 66666666666 350 350

44