Hola a todos
Incrusto un documento con información sobre el uso de atributos en XSL
Uso de Atributos en XML
martes, 24 de enero de 2012
miércoles, 18 de enero de 2012
Hola a todos
Incrusto el tema de manipulación de elementos XML
Tema Conversión y adaptación de documentos XML
Saludos,
Alfredo
Incrusto el tema de manipulación de elementos XML
Tema Conversión y adaptación de documentos XML
Saludos,
Alfredo
martes, 10 de enero de 2012
Ejercicios XML
Hola a todos.
Aquí os incluyo ejercicios XML para preparar el examen de la semana que viene
Ejercicio 1.
¿Cómo hacer una agenda que guardará el nombre y teléfono de cada persona?Además, cada persona tendrá un identificador (obligatoriamente) como atributo
<!ELEMENT agenda (persona)+>
<!ELEMENT persona (nombre, tlf)>
<!ATTLIST persona id ID #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT tlf (#PCDATA)>
<?xml version="1.0"?> <!DOCTYPE agenda SYSTEM "ejemplo-agenda.dtd"><agenda>
<persona id="ricardo"> <nombre>Ricardo Borriquero</nombre> <tlf>951345678</tlf> </persona> <persona id="eva"> <nombre>Eva Risto</nombre> <tlf>955837659</tlf> </persona> </agenda>Ampliar el ejemplo anterior de forma que además del nombre y teléfono, cada entrada de la agenda esté definida como persona del sexo masculino o femenino, tenga uno o varios emails, y se puedan especificar relaciones de amistad entre las diferentes personas de la agenda.
Ejercicio 2: Test
Conteste a las siguientes preguntas, señalando la opción que considere correcta.
1. En un esquema, si queremos establecer una secuencia de elementos hijos y se añade un indicador <xs:all> significa:
a) Que el orden de todos los hijos es indiferente siempre que solo aparezcan una vez (En el caso de cambiar de ocurrencia)
b) Que el orden de todos los hijos es importante y debe aparecer en el documento XML en el indicado en la secuencia
c) Que el orden de todos los hijos es indiferente puesto que sirve únicamente para elegir uno de los hijos indicados
d) Ninguna de las anteriores
2. En un esquema, si queremos establecer una secuencia de elementos hijos y se añade un indicador llamado <xs:Choice>, significa
a) Que el orden de todos los hijos es indiferente siempre que solo aparezcan una vez (En el caso de cambiar de ocurrencia)
b) Que el orden de todos los hijos es importante y debe aparecer en el documento XML en el indicado en la secuencia
c) Que el orden de todos los hijos es indiferente puesto que sirve únicamente para elegir uno de los hijos indicados
d) Ninguna de las anteriores
3. En un esquema, si queremos establecer una secuencia de elementos hijos y se añade un indicador llamado <xs:sequence>, significa:
a) Que el orden de todos los hijos es indiferente siempre que solo aparezcan una vez (En el caso de cambiar de ocurrencia)
b) Que el orden de todos los hijos es importante y debe aparecer en el documento XML en el indicado en la secuencia
c) Que el orden de todos los hijos es indiferente puesto que sirve únicamente para elegir uno de los hijos indicados
d) Ninguna de las anteriores
4. En un esquema, si nos encontramos con <xs:whiteSpacevalue=”preserve” />, significa:
a) Que en el texto que se almacene podrá sustituir todos los espacios en blanco, tabuladores, saltos de línea y retornos de carro; por un único espacio en blanco.
b) Que en el texto que se almacene se mantendrá inalterado, aún cuando se tengan multitud de espacios en blanco, tabuladores, saltos de línea y retornos de carro.
c) Que en el texto que se almacene se eliminarán todos los espacios en blanco , tabuladores, saltos de línea y retornos de carro
d) Ninguna de las anteriores.
Ejercicio 3:
Realizar un documento test.xml que incluya un elemento raíz test, hijos preguntas, con enunciado y opciones hijos de cada una de las cuatro preguntas anteriores
Hacer un DTD asociado a test.xml titulado test.dtd. Validar ambos archivos en http://xmlvalidation.com
Hacer un XSD asociado a test.xml titulado test.xsd. Validar ambos archivos en la localización anterior
Ejercicio 4
Modelar con XML una libreta de marcadores de páginas web. Cada archivo XML representará una lista de marcadores. Se debe modelar la siguiente información:
- nombre
- URL
Realizar el DTD y el XSD asociados, y comprobar que validan.
Ejercicio 5
Horario de aviones.
Contenido: Compañía, número de vuelo o nombre del trayecto, origen, destino, ruta, horas de salida, llegada.
Realizar el DTD y el XSD asociados, y comprobar que validan.
Ejercicio 6
Los siguientes documentos no son válidos porque contienen uno o dos errores (los errores no están en la DTD interna, salvo en el último documento). Corrija los errores y compruebe que ya son documentos válidos.
1. números
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE numeros [
<!ELEMENT numeros (#PCDATA)>
]>
<numeros>
<numero>25</numero>
</numeros>
2. letras
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE letras [
<!ELEMENT letras (letra)>
<!ELEMENT letra (#PCDATA)>
]>
<letras>
<letra>m</letra>
<letra>uve doble</letra>
</letras>
3. colores
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE colores [
<!ELEMENT colores (color*)>
<!ELEMENT color (#PCDATA)>
]>
<colores>
<color>azul marino</color>
negro
<color>amarillo</color>
</colores>
4. flores
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE flores [<!ELEMENT flores (flor+)>
<!ELEMENT flor (#PCDATA)>]> <flores></flores>5. Animales
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE animales [<!ELEMENT animales (animal*)>
<!ELEMENT animal (#PCDATA)>]> <animales> <perro>Caniche</perro> <gato>Siamés</gato></animales>6. Escritores
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE escritores [ <!ELEMENT escritores (escritor*)> <!ELEMENT escritor (nombre, nacimiento)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT nacimiento (#PCDATA)>]> <escritores> <escritor> <nombre>Mario Vargas LLosa</nombre> <nacimiento>28 de marzo de 1936</nacimiento> </escritor> <escritor> <nacimiento>1 de abril de 1929</nacimiento> <nombre>Milan Kundera</nombre> </escritor></escritores>7. Músicos
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE musicos [ <!ELEMENT musicos (musico*)> <!ELEMENT musico ((nombre | apodo), fechaNacimiento)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT apodo (#PCDATA)> <!ELEMENT fechaNacimiento (#PCDATA)>]> <musicos> <musico> <nombre>Antonio Vivaldi</nombre> <apodo>El cura pelirrojillo</apodo> <fechaNacimiento>4 de marzo de 1678</fechaNacimiento> </musico> <musico> <nombre>Johann Sebastian Bach</nombre> <apodo>El viejo peluca</apodo> <fechaNacimiento>21 de marzo de 1685</fechaNacimiento> </musico></musicos>8. Teléfonos de emergencia
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE agenda [<!ELEMENT agenda (contacto*)>
<!ELEMENT contacto (nombre, telefonoFijo*, telefonoMovil+)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT telefonoFijo (#PCDATA)> <!ELEMENT telefonoMovil (#PCDATA)>]> <agenda> <contacto> <nombre>Ayuntamiento</nombre> <telefonoFijo>010</telefonoFijo> </contacto> <contacto> <nombre>Emergencias</nombre> <telefonoFijo>112 (Unión Europea)</telefonoFijo> <telefonoMovil>Desconocido</telefonoMovil> <telefonoFijo>911 (Estados Unidos)</telefonoFijo> </contacto></agenda>9. El Sistema Solar
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sistemaSolar [ <!ELEMENT sistemaSolar (cuerpo*)> <!ELEMENT cuerpo ((planeta|satelite|asteroide)+)> <!ELEMENT planeta (#PCDATA)> <!ELEMENT satelite (#PCDATA)> <!ELEMENT asteroide (#PCDATA)>]> <sistemaSolar> <cuerpo> <planeta>Tierra</planeta> <satelite>Luna</satelite> </cuerpo> <asteroide>Ceres</asteroide></sistemaSolar>10. Álbumes Mortadelo y Filemón.
En el siguiente caso, el problema está en la DTD interna: Arregladlo de la mejor forma posible:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE albumesMortadelo [ <!ELEMENT albumesMortadelo (album*)> <!ELEMENT album (nombre, fecha)><!ATTLIST album nombre CDATA #REQUIRED>
<!ATTLIST album fecha(1969,1970,1971,1972,1973,1974) #REQUIRED>]> <albumesMortadelo><album nombre="El sulfato atómico" fecha="1969"/>
<album nombre="La caja de diez cerrojos" fecha="1971"/> <album nombre="El otro yo del profesor Bacterio" fecha="1973"/> <album nombre="Los cacharros majaretas" fecha="1974"/></albumesMortadelo>Saludos,
Alfredo
jueves, 15 de diciembre de 2011
Enunciadocoches
Crear una DTD que permita definir el almacenamiento de
coches de un concesionario de coches de segunda mano
Para ello, los campos a almacenar serán:
- Código de coche
- Marca
- Modelo
- Matrícula
- Potencia(Caballos)
- Plazas
- Número de puertas
Crear un documento XML que alamacene un conjunto de coches
Asignar a dicho documento la DTD y comprobar su
validez
coches de un concesionario de coches de segunda mano
Para ello, los campos a almacenar serán:
- Código de coche
- Marca
- Modelo
- Matrícula
- Potencia(Caballos)
- Plazas
- Número de puertas
Crear un documento XML que alamacene un conjunto de coches
Asignar a dicho documento la DTD y comprobar su
validez
Enunciado de Vecinos
Una comunidad de propietarios,
en su Junta General Ordinaria decide crear un
sistema de almacenamiento de la información
para almacenar datos de la comunidad.
De esta manera podrán realizar las gestiones
de manera más ágil y con un estándar de
comunicación con el resto de acreedores y
deudores de la comunidad. En principio,
los campos a almacenar son los siguientes:
- Código de vecino
- Nombre
- Apellidos
- Portal
- Piso y letra
- Código de cuenta corriente
-Cargo(Presidente, Vicepresidente, Secretario
Vocal, Ninguno)
Se pide lo siguiente:
- Generar una DTD que defina esta estructura
de información: Vecinos.xml, Vecinos.dtd
- Generar un documento xml con al menos 10
vecinos. Dos de ellos tendrán el cargo de
Presidente y Vicepresidente (al menos).
en su Junta General Ordinaria decide crear un
sistema de almacenamiento de la información
para almacenar datos de la comunidad.
De esta manera podrán realizar las gestiones
de manera más ágil y con un estándar de
comunicación con el resto de acreedores y
deudores de la comunidad. En principio,
los campos a almacenar son los siguientes:
- Código de vecino
- Nombre
- Apellidos
- Portal
- Piso y letra
- Código de cuenta corriente
-Cargo(Presidente, Vicepresidente, Secretario
Vocal, Ninguno)
Se pide lo siguiente:
- Generar una DTD que defina esta estructura
de información: Vecinos.xml, Vecinos.dtd
- Generar un documento xml con al menos 10
vecinos. Dos de ellos tendrán el cargo de
Presidente y Vicepresidente (al menos).
miércoles, 14 de diciembre de 2011
Archivo pedidos1.DTD<!ELEMENT pedidos (pedido+)>
<!ELEMENT pedido
((empresa|persona),producto+,fecha,
factura?)>
<!ELEMENT empresa (#PCDATA)>
<!ELEMENT persona (#PCDATA)>
<!ELEMENT producto (#PCDATA)>
<!ELEMENT fecha (#PCDATA)>
<!ELEMENT factura (emisor,total,fecha)>
<!ELEMENT emisor (#PCDATA)>
<!ELEMENT total (#PCDATA)>
<!ATTLIST empresa cif ID #REQUIRED>
<!ATTLIST producto idproducto ID #REQUIRED>
<!ATTLIST persona nif ID #REQUIRED>
<!ATTLIST factura numfactura ID #REQUIRED
cliente IDREF #REQUIRED
producto IDREFS #REQUIRED>
Archivo XML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE pedidos SYSTEM "pedidos1.dtd">
<pedidos>
<pedido>
<empresa
cif="W0000001">Warner</empresa>
<producto
idproducto="W000002">peliculas</producto>
<fecha>11-11-11</fecha>
</pedido>
</pedidos>
<!ELEMENT pedido
((empresa|persona),producto+,fecha,
factura?)>
<!ELEMENT empresa (#PCDATA)>
<!ELEMENT persona (#PCDATA)>
<!ELEMENT producto (#PCDATA)>
<!ELEMENT fecha (#PCDATA)>
<!ELEMENT factura (emisor,total,fecha)>
<!ELEMENT emisor (#PCDATA)>
<!ELEMENT total (#PCDATA)>
<!ATTLIST empresa cif ID #REQUIRED>
<!ATTLIST producto idproducto ID #REQUIRED>
<!ATTLIST persona nif ID #REQUIRED>
<!ATTLIST factura numfactura ID #REQUIRED
cliente IDREF #REQUIRED
producto IDREFS #REQUIRED>
Archivo XML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE pedidos SYSTEM "pedidos1.dtd">
<pedidos>
<pedido>
<empresa
cif="W0000001">Warner</empresa>
<producto
idproducto="W000002">peliculas</producto>
<fecha>11-11-11</fecha>
</pedido>
</pedidos>
lunes, 5 de diciembre de 2011
Ejercicios de DTD
Hola a todos.
A continuación, expongo algunos ejercicios de DTD:
- Crear documento xml que almacene información de alumnos. Por cada alumno se tendrá nombre, apellidos, domicilio, teléfono (teniendo en cuenta que puede tener más de uno).
a. Con DTD interna
b. Con DTD externa
2. Realizar los siguientes cambios al ejercicio anterior:
a. El alumno puede pertenecer opcionalmente a uno de los equipos deportivos del centro.
b. El alumno puede indicar si lo desea una o más aficiones de las que tenga.
c. Se desea almacenar el origen del alumno, la provincia si es español, o bien el país de origen si es extranjero.
d. Modificar el esquema para poder poner opcionalmente comentarios sobre los alumnos. Crear un elemento definido como ANY que permita incluir cualquier información de tipo texto junto con elementos definidos en el esquema.
e. Incluir un elemento mixto de nombre notas que permita indicar texto libre y/o los elementos evaluación y calificación. Probar el funcionamiento incluyendo un elemento no definido en el esquema.
3. Realizar los siguientes cambios al ejercicio anterior:
a. Incluir un atributo num_alumno que identifique a los alumnos de forma única. Comprobar que el valor debe comenzar por una letra, y que deben ser valores únicos
b. Se desea incluir opcionalmente información sobre la altura en cm. del alumno.
c. Se desea conocer el sexo de los alumnos: hombre o mujer, si bien no será obligatorio que aparezca esta información.
d. Se desea reflejar para cada número de teléfono almacenado para un alumno, si es propio, del padre, de la madre, o del tutor. Poner un valor que no esté en la lista enumerada para comprobar que da error.
e. Algunos alumnos son ayudados por otro alumno, interesando reflejar la información del alumno que le ayuda. Comprobar que el valor de un atributo IDREF debe coincidir con el valor de un atributo ID.
4. Crear un documento xml con DTD externa que permita almacenar pedidos de clientes, con las siguientes características:
a. Nombre del DTD: pedidos. Contendrá 1 o varios elementos de nombre pedido.
b. El elemento pedido se compondrá de: empresa o cliente que realiza el pedido (uno u otro pero no dos en el mismo pedido), productos solicitados (al menos uno), fecha, y opcionalmente un elemento llamado factura.
i. El elemento empresa será de tipo PCDATA y tendrá un atributo llamado CIF como identificador único.
ii. El elemento persona será de tipo PCDATA y tendrá un atributo llamado NIF como identificador único.
iii. El elemento producto será de tipo PCDATA.
iv. El elemento fecha será de tipo PCDATA
v. El elemento factura se compone a su vez de los elementos emisor, total y fecha. Además tendrá dos atributos: numfactura que será identificador único; cliente (obligatorio) que referenciará a la empresa o cliente que aparece en el elemento pedido; y productos que referenciará a uno varios identificadores de producto.
Comprobar la validez de los valores de atributos ID, IDREF e IDREFS.
5. Modificar el esquema anterior, incorporando los siguientes cambios:
a. Incorporar una entidad general de nombre MiEmpresa y texto “Mi Empresa”, y utilizarla para indicar el valor de emisor en el elemento factura del documento XML.
b. Añadir una entidad general externa analizable. Crear un fichero de tipo texto de nombre entgenextana.txt y contenido: “Mi Empresa (CIFQ2899999Z)”. Utilizar esta entidad como valor en el elemento emisor de uno de los pedidos.
c. Añadir una entidad general externa analizable.
d. Añadir una entidad paramétrica interna para representar nombre y apellidos de una persona. Después modificar el elemento persona para definirlo con la entidad.
e. Agregar una entidad paramétrica externa para representar la estructura de los productos. Para ello crear un fichero DTD para producto compuesto de elementos descrip y pvp de tipo PCDATA. Comprobar la validez de los valores de atributos ID, IDREFS para productos.
f. Agregar dos nuevos atributos al elemento empresa: sector de tipo NMTOKEN y actividad de tipo NMTOKENS. El tipo NMTOKEN sólo puede contener letras, dígitos, punto [ . ], guión [ - ], subrayado [ _ ] y dos puntos [ : ] . El tipo NMTOKENS pueden contener los mismos caracteres que NMTOKEN más espacios en blanco. Un espacio en blanco consiste en uno o más espacios, retornos de carro o tabuladores. Comprobarlo introduciendo valores erróneos para los nuevos atributos.
Saludos,
Alfredo
Suscribirse a:
Entradas (Atom)