sábado, 24 de septiembre de 2016

Ejemplo de lenguaje de marcas creado con xml: svg

Hola a todos
El archivo Ejemplo.svg contiene la siguiente información:



<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12cm" height="8cm">
<title>El triángulo rojo</title>
<polygon style="fill:red" points="0, 311,180,0,360,311" />
</svg>


Si lo guardáis con la extensión svg y lo abrís con un navegador capaz de entender svg, os aparecerá un triangulo rojo, tal y como podéis ver en la figura.

Saludos,
Alfredo

Más ejercicios de DTD


lunes, 5 de diciembre de 2011


Ejercicios de DTD

Hola a todos. 
A continuación, expongo algunos ejercicios de DTD:
  1. 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

Ejercicios de DTD

Hola a todos

A continuación, os paso una serie de ejercicios de DTD

DTD - Ejercicio 1 - Elementos sin atributos - Corregir errores en los elementos

Los siguientes documentos no son válidos porque contienen uno o dos errores (los errores no están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos.

DTD - Ejercicio 1-1 - Números

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE numeros [
  <!ELEMENT numeros (#PCDATA)>
]>

<numeros>
  <numero>25</numero>
</numeros>

DTD - Ejercicio 1-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>

DTD - Ejercicio 1-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>

DTD - Ejercicio 1-4 - Flores

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE flores [
  <!ELEMENT flores (flor+)>
  <!ELEMENT flor (#PCDATA)>
]>

<flores>
</flores>

DTD - Ejercicio 1-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>

DTD - Ejercicio 1-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>

DTD - Ejercicio 1-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>

DTD - Ejercicio 1-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>

DTD - Ejercicio 1-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>

DTD - Ejercicio 2 - Elementos sin atributos - Corregir errores en la DTD

Los siguientes documentos no son válidos porque contienen errores (los errores están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos. Casi siempre habrá varias maneras de corregir la DTD, intente elegir la más sencilla.

DTD - Ejercicio 2-1 - Marcadores

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE favoritos [
  <!ELEMENT favoritos (marcador)>
  <!ELEMENT marcador (nombre, uri)>
  <!ELEMENT nombre (#PCDATA)>
  <!ELEMENT uri (#PCDATA)>
]>

<marcadores>
  <marcador>
    <nombre>W3C</nombre>
    <uri>http://www.w3.org/</uri>
  </marcador>
  <marcador>
    <nombre>Web Hypertext Application Technology Working Group (WHATWG)</nombre>
    <uri>http://www.whatwg.org/</uri>
  </marcador>
</marcadores>

DTD - Ejercicio 2-2 - Efemérides

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE efemerides [
  <!ELEMENT efemerides (efemeride)>
  <!ELEMENT efemeride (fecha, hecho)>
]>

<efemerides>
  <efemeride>
    <fecha>20 de julio de 1969</fecha>
    <hecho>Llegada del hombre a la Luna</hecho>
  </efemeride>
  <efemeride>
    <fecha>12 de octubre de 1492</fecha>
    <hecho>Llegada de Colón a América</hecho>
  </efemeride>
  <efemeride>
    <fecha>6 de abril de 1909</fecha>
    <hecho>llegada de Robert Peary al Polo Norte</hecho>
  </efemeride>
</efemerides>

DTD - Ejercicio 2-3 - Aeropuertos

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aeropuertos [
  <!ELEMENT aeropuertos (aeropuerto*)>
  <!ELEMENT aeropuerto (nombre, cerrado)>
  <!ELEMENT nombre (#PCDATA)>
  <!ELEMENT cerrado (#PCDATA)>
]>

<aeropuertos>
  <aeropuerto>
    <nombre>Berlín Schönefeld (SFX)</nombre>
  </aeropuerto>
  <aeropuerto>
    <nombre>Berlín Tempelhof (THF)</nombre>
    <cerrado />
 </aeropuerto>
</aeropuertos>

DTD - Ejercicio 2-4 - Vuelos

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE vuelos [
  <!ELEMENT vuelos (vuelo*)>
  <!ELEMENT vuelo (origen, destino)>
  <!ELEMENT origen (#PCDATA)>
  <!ELEMENT destino (#PCDATA)>
]>

<vuelos>
  <vuelo>
    <origen>Valencia (VLC)</origen>
    <destino>Londres Heathrow (LHR)</destino>
  </vuelo>
  <vuelo>
    <destino>Berlín Schönefeld (SFX)</destino>
    <origen>Paris Charles de Gaulle (CDG)</origen>
  </vuelo>
</vuelos>

DTD - Ejercicio 2-5 - Reyes españoles

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE reyesEspañoles [
  <!ELEMENT reyesEspañoles (rey*, reina*)>
  <!ELEMENT rey (nombre, padre, madre)>
  <!ELEMENT nombre (#PCDATA)>
  <!ELEMENT padre (#PCDATA)>
  <!ELEMENT madre (#PCDATA)>
]>

<reyesEspañoles>
  <rey>
    <nombre>Felipe III</nombre>
    <padre>Felipe II</padre>
    <madre>Ana de Austria</madre>
  </rey>
  <reina>
    <nombre>Juana la Loca</nombre>
    <padre>Fernando el Católico</padre>
    <madre>Isabel la Católica</madre>
  </reina>
  <rey>
    <nombre>Carlos I</nombre>
    <padre>Felipe el Hermoso</padre>
    <madre>Juan la Loca</madre>
  </rey>
</reyesEspañoles>

DTD - Ejercicio 2-6 - Países

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paises [
  <!ELEMENT pais (nombre, unionEuropea, otan)>
  <!ELEMENT nombre EMPTY>
  <!ELEMENT unionEuropea EMPTY>
  <!ELEMENT otan EMPTY>
]>

<paises>
  <pais>
    <nombre>España</nombre>
    <unionEuropea />
    <otan />
  </pais>
  <pais>
    <nombre>Noruega</nombre>
    <otan />
  </pais>
  <pais>
    <nombre>Austria</nombre>
    <unionEuropea />
  </pais>
</paises>

DTD - Ejercicio 2-7 - Códigos de colores

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE colores [
  <!ELEMENT colores (color*)>
  <!ELEMENT nombreSvg (#PCDATA)>
  <!ELEMENT rgb (#PCDATA)>
  <!ELEMENT cmyk (#PCDATA)>
]>

<colores>
  <color>
    <nombreSvg>Purple</nombreSvg>
    <codigo>
      <rgb>#800080</rgb>
    </codigo>
  </color>
  <color>
    <nombreSvg>Purple</nombreSvg>
    <codigo>
      <cmyk>#00FF007F</cmyk>
    </codigo>
  </color>
</colores>

DTD - Ejercicio 2-8 - Contabilidad

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE contabilidad [
  <!ELEMENT contabilidad ((ingreso | gasto)*)>
  <!ELEMENT fecha (#PCDATA)>
  <!ELEMENT cantidad (#PCDATA)>
  <!ELEMENT concepto (#PCDATA)>
]>

<contabilidad>
  <apunte>
    <ingreso />
    <fecha>24 de febrero de 2011</fecha>
    <cantidad>1800,00 €</cantidad>
    <concepto>Salario</concepto>
  </apunte>
  <apunte>
    <gasto />
    <fecha>28 de febrero de 2011</fecha>
    <cantidad>74,25 €</cantidad>
    <concepto>Recibo luz</concepto>
  </apunte>
</contabilidad>

DTD - Ejercicio 2-9 - Mensajes

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mensajes [
  <!ELEMENT mensajes (mensaje)>
  <!ELEMENT de (#PCDATA)>
  <!ELEMENT para (#PCDATA)>
  <!ELEMENT hora (#PCDATA)>
  <!ELEMENT texto (#PCDATA)>
  <!ELEMENT strong (#PCDATA)>
]>

<mensajes>
  <mensaje>
    <de>Pepe (pepe@example.com)</de>
    <para>Juan (juan@example.com)</para>
    <hora>28/02/2011 17:48:23,61</hora>
    <texto>¿Hola, Juan, qué haces?</texto>
  </mensaje>
  <mensaje>
    <de>Juan (juan@example.com)</de>
    <para>Pepe (pepe@example.com)</para>
    <hora>28/02/2011 17:54:20,87</hora>
    <texto>Aquí, aprendiendo <strong>XML</strong></texto>
  </mensaje>
</mensajes>

DTD - Ejercicio 3 - Elementos con atributos - Corregir errores en los elementos

Los siguientes documentos no son válidos porque contienen uno o dos errores (los errores no están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos.

DTD - Ejercicio 3-1 - Datos personales

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persona [
  <!ELEMENT persona EMPTY>
  <!ATTLIST persona nombre CDATA #IMPLIED>
]>

<persona dni="03141592E" />

DTD - Ejercicio 3-2 - Película

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pelicula [
  <!ELEMENT pelicula EMPTY>
  <!ATTLIST pelicula titulo CDATA #IMPLIED>
]>

<pelicula titulo="La diligencia" genero="oeste" />

DTD - Ejercicio 3-3 - Cuadros

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cuadros [
  <!ELEMENT cuadros (cuadro*)>
  <!ELEMENT cuadro EMPTY>
  <!ATTLIST cuadro titulo ID #REQUIRED>
  <!ATTLIST cuadro autor CDATA #REQUIRED>
]>

<cuadros>
  <cuadro titulo="Adán y Eva" autor="Alberto Durero" />
  <cuadro autor="Lucas Cranach, el viejo" titulo="Adán y Eva" />
</cuadros>

DTD - Ejercicio 3-4 - Lista de la compra

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE listaCompra [
  <!ELEMENT listaCompra (item*)>
  <!ELEMENT item EMPTY>
  <!ATTLIST item nombre CDATA #REQUIRED>
  <!ATTLIST item cantidad CDATA #REQUIRED>
]>

<listaCompra>
  <leche cantidad="12 litros" ></leche>
  <pan cantidad="3 barras de cuarto" />
</listaCompra>

DTD - Ejercicio 3-5 - Jugadores de fútbol

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE futbol [
  <!ELEMENT futbol (jugador*)>
  <!ELEMENT jugador EMPTY>
  <!ATTLIST jugador nombre NMTOKENS #REQUIRED>
  <!ATTLIST jugador codigo ID #REQUIRED>
]>

<futbol>
  <jugador nombre="Alfredo Di Stéfano" codigo="1"/>
  <jugador nombre="Edson Arantes do Nascimento, Pelé" codigo="2" />
  <jugador nombre="Diego Armando Maradona" codigo="3" />
  <jugador nombre="Johan Cruyff" codigo="4" />
</futbol>

DTD - Ejercicio 3-6 - Jugadores y equipos de fútbol

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE futbol [
  <!ELEMENT futbol ((jugador|equipo)*)>
  <!ELEMENT jugador EMPTY>
  <!ATTLIST jugador nombre NMTOKENS #REQUIRED>
  <!ATTLIST jugador codigo ID #REQUIRED>
  <!ELEMENT equipo EMPTY>
  <!ATTLIST equipo nombre CDATA #REQUIRED>
  <!ATTLIST equipo jugadores IDREFS #IMPLIED>
]>

<futbol>
  <jugador nombre="Alfredo Di Stéfano" codigo="ads"/>
  <jugador nombre="Edison Arantes do Nascimento" codigo="ean" />
  <jugador nombre="Diego Armando Maradona" codigo="dam" />
  <jugador nombre="Johan Cruyff" codigo="jc" />
  <equipo nombre="Società Sportiva Calcio Napoli" jugadores="Maradona" />
  <equipo nombre="Futbol Club Barcelona" jugadores="Cruyff, Maradona" />
</futbol>

DTD - Ejercicio 4 - Elementos con atributos - Corregir errores en la DTD

Los siguientes documentos no son válidos porque contienen errores (los errores están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos. Casi siempre habrá varias maneras de corregir la DTD, intente elegir la más sencilla.

DTD - Ejercicio 4-1 - Libro

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE libro [
  <!ELEMENT libro EMPTY>
  <!ATTLIST libro autor NMTOKEN #REQUIRED>
]>

<libro autor="Mario Vargas LLosa" />

DTD - Ejercicio 4-2 - Inventores

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inventores [
  <!ELEMENT inventores>
  <!ELEMENT inventor EMPTY>
  <!ATTLIST inventor invento CDATA #REQUIRED>
  <!ATTLIST inventor nombre ID #REQUIRED>
]>

<inventores>
  <inventor nombre="Robert Adler" invento="Mando a distancia" />
  <inventor nombre="Laszlo Josef Biro" invento="Bolígrafo" />
  <inventor nombre="Josephine Garis Cochran" invento="Lavaplatos" />
  <inventor invento="Fuego" />
</inventores>

DTD - Ejercicio 4-3 - Cosas por hacer

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cosasPorHacer [
  <!ELEMENT cosasPorHacer (cosa)>
  <!ELEMENT cosa EMPTY>
  <!ATTLIST cosa fecha CDATA #REQUIRED>
  <!ATTLIST cosa asunto CDATA #REQUIRED>
  <!ATTLIST cosa fechaLimite CDATA #REQUIRED>
]>

<cosasPorHacer>
  <cosa fecha="20 de febrero de 2011" fechaLimite="1 de marzo de 2011">
  Preparar ejercicios de DTDs</cosa>
  <cosa fecha="21 de febrero de 2011" fechaLimite="5 de marzo de 2011">
  Preparar tema XSLT</cosa>
</cosasPorHacer>

DTD - Ejercicio 4-4 - Resoluciones de pantalla

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resoluciones [
  <!ELEMENT resoluciones EMPTY>
  <!ATTLIST resoluciones nombre NMTOKEN #REQUIRED>
  <!ATTLIST resoluciones alto CDATA #REQUIRED>
  <!ATTLIST resoluciones ancho CDATA #REQUIRED>
]>

<resoluciones>
  <resolucion nombre="VGA" alto="480" ancho="640" />
  <resolucion nombre="XGA" alto="1024" ancho="768" />
  <resolucion nombre="HD 1080" alto="1920" ancho="1080" />
</resoluciones>

DTD - Ejercicio 4-5 - Álbumes de Mortadelo y Filemón

<?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>

DTD - Ejercicio 5 - DTDs alternativos

Se quiere definir un lenguaje de marcas para representar los resultados de una liga de fútbol. La información que se quiere almacenar de cada partido es:
  • el nombre del equipo local
  • el nombre del equipo visitante
  • los goles marcados por el equipo local
  • los goles marcados por el equipo visitante
Escribe tres documentos que incluyan los siguientes resultados:
  • Nottingham Presa: 0 - Inter de Mitente: 1
  • Vodka Juniors: 3 - Sparta da Risa: 3
  • Water de Munich: 4 - Esteaua es del grifo: 2
Cada documento incluirá un DTD diferente para representar ese lenguaje de marcas:
  • una DTD en la que no haya atributos, sino únicamente etiquetas
  • una DTD en la que los goles sean atributos
  • una DTD en la que toda la información se guarde en forma de atributos