Sunteți pe pagina 1din 4

Prctica 1 a

Desarrollo de Aplicaciones con Lenguajes de Marcado Jos Toms Tocino Garc e a a Enero de 2012

1.

Ejercicio 1: documento para guardar informacin de contacto o

En este primer ejercicio se nos pide, en primer lugar, comprobar la validez de los documentos XML propuestos. Adems de a travs de la web indicada, es posible validar estos cheros con la herramienta a e xmllint en sistemas GNU/Linux. Para validar ambos cheros he utilizado los siguientes comandos xmllint --noout --valid PersonaDTDInterno.xml xmllint --noout --valid PersonaDTDExterno.xml Si no aparecen mensajes de error, la validacin es correcta. Si quisiramos validar un chero XML o e respecto de un DTD externo en el caso de que aqul no contuviese una directiva DOCTYPE, ser posible e a hacerlo utilizando el comando: xmllint --noout --valid --dtdvalid persona.dtd PersonaDTDExterno.xml Ahora, aadimos la directiva DOCTYPE al chero Persona2.xml con la siguiente l n nea: <!DOCTYPE persona SYSTEM "persona.dtd"> Si intentamos validar este chero, el resultado no es favorable: Persona2.xml:3: element personas: validity error : root and DTD name do not match personas and persona <personas> ^ Persona2.xml:4: element persona: validity error : No declaration for attribute sexo of element persona <persona sexo=varon relacion=jefe> ^ [...] Para continuar, creamos un nuevo chero personas.dtd (dado que el nuevo elemento ra ser persoz a nas) con las modicaciones siguientes: <!ELEMENT personas (persona+)> <!ELEMENT persona (nombre, apellidos, nacimiento?, direcciones, (varon|hembra)?)> <!ATTLIST persona sexo (varon|hembra) #REQUIRED 1

<!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST

<!ELEMENT <!ELEMENT <!ATTLIST <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT

relacion CDATA #REQUIRED> nombre (#PCDATA)> apellidos (#PCDATA)> nacimiento EMPTY> nacimiento dia CDATA #REQUIRED mes CDATA #REQUIRED anio CDATA #REQUIRED> direcciones (direccion+)> direccion (calle,poblacion,provincia, cpostal)> direccion tipo CDATA #REQUIRED> calle (#PCDATA)> poblacion (#PCDATA)> provincia (#PCDATA)> cpostal (#PCDATA)> varon EMPTY> hembra EMPTY>

2.

Ejercicio 2

El DTD que he construido es el siguiente: <!ELEMENT song (title, composers, producers, publisher, artists)> <!ATTLIST song length CDATA #REQUIRED anio CDATA #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT composers (composer+)> <!ELEMENT composer (nombre, apellidos)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT apellidos (#PCDATA)> <!ELEMENT producers (producer+)> <!ELEMENT producer (nombre, apellidos)> <!ELEMENT publisher (#PCDATA)> <!ELEMENT artists (artist+)> <!ELEMENT artist (#PCDATA)> El documento que se ajusta al DTD redactado es el siguiente: <?xml version="1.0"?> <!DOCTYPE song SYSTEM "song.dtd"> <song length="6:20" anio="1978"> <title>Hot Cop</title> <composers> <composer> <nombre>Henry</nombre> <apellidos>Beolo</apellidos> </composer> 2

</composers> <producers> <producer> <nombre>Jacques</nombre> <apellidos>Morali</apellidos> </producer> </producers> <publisher>PolyGram</publisher> <artists> <artist>Village People</artist> </artists> </song> Utilizando diversas herramientas de validacin comprobamos que el XML se corresponde correctao mente con el DTD indicado.

2.1.

Apartado 2

Para representar los CDs he generado el siguiente DTD: <!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST cd (songs, fecha)> songs (song+)> song (title, composers, producers, publisher, artists)> song length CDATA #REQUIRED anio CDATA #REQUIRED> title (#PCDATA)> composers (composer+)> composer (nombre, apellidos)> nombre (#PCDATA)> apellidos (#PCDATA)> producers (producer+)> producer (nombre, apellidos)> publisher (#PCDATA)> artists (artist+)> artist (#PCDATA)> fecha EMPTY> fecha dia CDATA #REQUIRED mes CDATA #REQUIRED anio CDATA #REQUIRED>

<!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST

El ejemplo de chero XML que he utilizado para vericar contra el DTD es el siguiente: <?xml version="1.0"?> <!DOCTYPE cd SYSTEM "cd.dtd"> <cd> <songs> <song length="6:20" anio="1978"> 3

<title>Hot Cop</title> <composers> <composer> <nombre>Henry</nombre> <apellidos>Beolo</apellidos> </composer> </composers> <producers> <producer> <nombre>Jacques</nombre> <apellidos>Morali</apellidos> </producer> </producers> <publisher>PolyGram</publisher> <artists> <artist>Village People</artist> </artists> </song> </songs> <fecha dia="3" mes="5" anio="1988"/> </cd>

S-ar putea să vă placă și