Ejercicio: miniHTML

378 views
Skip to first unread message

Administrador

unread,
Nov 13, 2012, 12:46:11 PM11/13/12
to ix...@googlegroups.com
El objetivo de este ejercicio es desarrollar un miniHTML, una simplificación del lenguaje HTML (en realidad, XHTML, que sí que es un lenguaje basado en XML). Tienes que:
  1. Definir el DTD para miniHTML: selecciona de 10 a 15 etiquetas del lenguaje HTML que te permitan escribir un documento que sea realmente un documento HTML válido.
  2. Escribe un documento miniHTML (que será un documento XML) que sea válido respecto a tu DTD.
  3. Valida el documento miniHTML con tu DTD.
Para el DTD sólo tienes que emplear las declaraciones <!ELEMENT y <!ATTLIST.

Tienes que publicar un mensaje de respuesta a este mensaje con (ficheros adjuntos):
  1. El DTD.
  2. El documento (o varios documentos, si quieres) de ejemplo que validen miniHTML.
  3. Una captura de pantalla que muestre que tu documento es válido.



Dani Sarabia

unread,
Nov 13, 2012, 1:26:19 PM11/13/12
to ix...@googlegroups.com
Hemos utilizado el notepad++ y su plugin xmlTools, para comprobar el buen funcionamiento del dtd hemos usado la pagina validome.org
 
La validación ha sido correcta:


 
  A la hora de forzar un error hemos eliminado la etiqueta <h1>:
 

Comprobamos como nos da error.
 
CapturaValidacionOK.JPG
ForzandoErrorH1.JPG
pagina.xml

Jose Manuel Alberola Navarro

unread,
Nov 13, 2012, 1:34:17 PM11/13/12
to ix...@googlegroups.com
Hemos usado el XML Tools para Notepad++ y hemos validado nuestro archivo XML con nuestro DTD. En el fichero comprimido adjunto hemos pùesto dos capturas, una válida y otra provocando un error, además de los dos ficheros el dtd y el xml.

Damián Poveda Payá
Jose Manuel Alberola Navarro
Jorger Miralles Sánchez
Eduardo Sánchez Soria
Borja A. Liceras Asensi
David Crespo Payá

Validacion.rar

Claudio

unread,
Nov 13, 2012, 1:45:11 PM11/13/12
to ix...@googlegroups.com

Adjuntamos los documentos DTD.dtd, HTML.xml y distintas capturas de pantalla demostrando que el HTML cumple las condiciones establecidas en el DTD y otra captura demostrando un error a la hora de validar el HTML.

Hemos realizado la validación con Notepad++, concretamente con la extensión "XML Tools", con la opción de "Validate Now"

A la hora de adjuntar el DTD al documento HTML hemos tenido problemas con el Notepad++, por lo que hemos adjuntado el DTD en el mismo documento para poder realizar las pruebas.


DTD HTML.zip

Javi Lacalle

unread,
Nov 13, 2012, 1:46:58 PM11/13/12
to ix...@googlegroups.com
Hemos probado a validar nuestro XML de prueba con el DTD usando el W3C School y como vemos funciona correctamente.

Por otro lado hemos forzado un fallo eliminando la etiqueta "head" del documento, es una etiqueta obligatoria en el DTD.


Para validar hemos usado IE8 ya que es el único navegador que lo permite.

miniXML.zip

Rafa Torres

unread,
Nov 13, 2012, 1:58:32 PM11/13/12
to ix...@googlegroups.com
Aqui adjuntamos las capturas del ejercicio.

En una de ellas podemos ver la validación correcta del DTD, y en la otra hemos forzado un error para comparar (hemos eliminado el 'src' que es requerido).






ImagenesArchivosDTD.rar

Natalia Kuzmenko

unread,
Nov 13, 2012, 2:28:30 PM11/13/12
to ix...@googlegroups.com


вторник, 13 ноября 2012 г., 21:46:11 UTC+4 пользователь Administrador написал:
new 3.xml

Nicolas Kaiser

unread,
Nov 14, 2012, 10:31:55 AM11/14/12
to ix...@googlegroups.com
He probado la validez del documento XML con el DTD utilizando xmllint.
Al principio me agregó un error para propósitos de prueba.
La segunda vez la validación tuvo éxito.


1. el DTD:

<!ELEMENT html (head?, body)>
<!ELEMENT head (title, meta*)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT meta EMPTY>
<!ATTLIST meta charset (US-ASCII|ISO-8859-1|UTF-8) "UTF-8"
               name CDATA #IMPLIED
               content CDATA #IMPLIED>
<!ELEMENT body (#PCDATA|h1|h2|h3|h4|h5|h6|p|br)*>
<!ELEMENT h1 (#PCDATA|a|br)*>
<!ELEMENT h2 (#PCDATA|a|br)*>
<!ELEMENT h3 (#PCDATA|a|br)*>
<!ELEMENT h4 (#PCDATA|a|br)*>
<!ELEMENT h5 (#PCDATA|a|br)*>
<!ELEMENT h6 (#PCDATA|a|br)*>
<!ELEMENT p (#PCDATA|a|br|table)*>
<!ELEMENT a (#PCDATA|br)*>
<!ATTLIST a href CDATA #REQUIRED>
<!ELEMENT br EMPTY>
<!ELEMENT table (tr)+>
<!ELEMENT tr (th|td)+>
<!ELEMENT th (#PCDATA|a|br)*>
<!ELEMENT td (#PCDATA|a|br)*>


2. el documento miniHTML:

<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
  <title>Mi documento miniHTML</title>
  <meta name="description" content="Un documento miniHTML"/>
  <meta name="keywords" content="miniHTML,XML,DTD"/>
  <meta name="author" content="Nicolas Kaiser"/>
  <meta charset="UTF-8"/>
</head>
<body>
  <h3>Este es un título</h3>
  <p>
    Este es un párrafo.<br/>
    Este es un <a href="http://xmlsoft.org/xmldtd.html">enlace</a>.<br/><br/>
    <table>
      <tr>
        <th>English</th>
        <th>Español</th>
      </tr>
      <tr>
        <td>title</td>
        <td>título</td>
      </tr>
      <tr>
        <td>paragraph</td>
        <td>párrafo</td>
      </tr>
      <tr>
        <td>link</td>
        <td>enlace</td>
      </tr>
    </table>
  </p>
</body>
</html>


3. una captura de pantalla:

$ xmllint --dtdvalid miniHTML.dtd --noout miniHTML.xml 
miniHTML.xml:34: parser error : Opening and ending tag mismatch: p line 12 and body
</body>
       ^
miniHTML.xml:35: parser error : Opening and ending tag mismatch: body line 10 and html
</html>
       ^
miniHTML.xml:36: parser error : Premature end of data in tag html line 2

^
$ xmllint --dtdvalid miniHTML.dtd --noout miniHTML.xml 

Artur Brotons

unread,
Nov 14, 2012, 11:48:27 AM11/14/12
to ix...@googlegroups.com
Aquí van los míos: documento.xmlminiHTML.dtd y xmlValido.png. El resto son para demostrar que verdaderamente se detectan los errores si no el documento no es válido.

No he profundizado mucho en el error, pero me parece curioso lo siguiente. No se puede definir un elemento con (#PCDATA | otro | otro2 )+

Con validome.org dice lo siguiente al validar el DTD:

LineFile name:Nonexistent
41Column:33
 Error:The mixed content model "a" must end with ")*" when the types of child elements are constrained.
 Error Position:
<!ELEMENT a (#PCDATA | h1 | img)+>


Por ejemplo, no son válidos:
<!ELEMENT a (#PCDATA | h1 | img)+>
<!ELEMENT a (#PCDATA | h1 | img)>

Y sí lo son:
<!ELEMENT a (#PCDATA | h1 | img)*>
<!ELEMENT a (h1 | img)+>
miniHTML.zip

Sergio Luján Mora

unread,
Nov 14, 2012, 2:00:09 PM11/14/12
to ix...@googlegroups.com
(#PCDATA | otro | otro2 )no es válido, para definir un módelo mixto (texto y etiquetas) se tiene que seguir la sintaxis definida, que obliga a utilizar * como cuantificador.

Un saludo.

Aclivis

unread,
Nov 16, 2012, 11:33:40 AM11/16/12
to ix...@googlegroups.com
He trabajado con NetBeans, que permite construir documentos XML y DTD. También permite verificar la sintaxis del DTD, si el XML está bien formado, y si éste es válido con respecto a su DTD.

Un saludo!



El martes, 13 de noviembre de 2012 18:46:11 UTC+1, Administrador escribió:
Tema1.zip

Rafael Abril

unread,
Nov 18, 2012, 4:19:29 PM11/18/12
to ix...@googlegroups.com
Hola buenas:

Yo he trabajado con EditiX.
Aquí os adjunto el material.

Saludos.



El martes, 13 de noviembre de 2012 18:46:11 UTC+1, Administrador escribió:
tema1.zip

Iñigo Garcia

unread,
Nov 22, 2012, 1:20:42 PM11/22/12
to ix...@googlegroups.com
Os adjunto los ficheros que he elaborado con notepad++

Un saludo


El martes, 13 de noviembre de 2012 18:46:11 UTC+1, Administrador escribió:
Ejercicio 1.rar

Jorge de Castro

unread,
Nov 30, 2012, 10:00:29 AM11/30/12
to ix...@googlegroups.com
Buenas. He realizado el ejercicio con la herramienta NetBeans ya que permite una validación de forma sencilla. A su vez también he comprobado la validación mediante la web http://www.xmlvalidation.com.

A continuación adjunto el ejercicio. El xml, su DTD y dos imagenes, una con la validación exitosa y otra con una validación erronea debido a un error forzado al suprimir en el DTD el div en el contenido de la etiqueta body.

El martes, 13 de noviembre de 2012 18:46:11 UTC+1, Administrador escribió:
EjercicioIXML1.rar

Sergio Gallardo Sales

unread,
Nov 30, 2012, 3:49:05 PM11/30/12
to ix...@googlegroups.com
He intentado validar el documento XML con el DTD con el editor Editix y en una web y en los dos me sale el mismo error:

Este es un trozo de mi ficher XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE miniHTML SYSTEM "miniDTD.dtd">
<html lang="es">
<head>
<meta name="author" content="Sergio Gallardo Sales" />
<title>Mi documento miniHTML</title>
</head>
...

Y el DTD es:

<!-- HTML -->
<!-- Vamos a obligar a poner el atributo lang -->
<!ELEMENT html (head, body)>
<!ATTLIST html lang CDATA #REQUIRE>

<!-- HEAD -->
<!ELEMENT head (meta, title)>
...

Pues bien, en los dos casos me sale el error:
11:27Open quote is expected for attribute "lang" associated with an element type "html".

 Y como puedes ver el atributo lang si que tiene las comillas. Es raro porque me da error en los dos sitios.
 
Aquí os dejo una captura.

 
Muchas gracias. Un saludo.



Administrador

unread,
Nov 30, 2012, 4:08:42 PM11/30/12
to ix...@googlegroups.com
Hola Sergio.

Tienes un DTD, en la definición del atributo lang, pero el mensaje de error no ayuda mucho, la verdad:

<!ATTLIST html lang CDATA #REQUIRE>

El modificador para que el atributo sea obligatorio es #REQUIRED, te falta una "D".

Por favor, dinos si ese era el fallo. ¿Habías validado la sintaxis del DTD? Con Editix lo puedes hacer.

Un saludo.

Sergio Gallardo Sales

unread,
Nov 30, 2012, 4:44:50 PM11/30/12
to ix...@googlegroups.com
Si era eso, pero ahora me ha surgido otro error:



El viernes, 30 de noviembre de 2012 21:49:05 UTC+1, Sergio Gallardo Sales escribió:

Administrador

unread,
Dec 1, 2012, 12:41:29 PM12/1/12
to ix...@googlegroups.com
Hola Sergio.

El error que te aparece ahora es debido a la declaración del elemento p, que supongo que quieres que sea un modelo de contenido mixto (texto y etiquetas), pero está mal declarado.

En el vídeo Document Type Definition (DTD) (parte 2) en el instante 4:07 se explica cómo se tiene que hacer.

Un saludo.

Sergio Gallardo Sales

unread,
Dec 1, 2012, 7:40:40 PM12/1/12
to ix...@googlegroups.com
Siii. Era eso Muchas Gracias.

Jose Tomas Juan Cañabate

unread,
Dec 18, 2012, 6:06:45 AM12/18/12
to ix...@googlegroups.com
Ahí va el mío. Realizado desde Eclipse. Dispone de validador simple de XML y DTD, desde luego hay mejores alternativas pero esta navaja suiza te puede servir temporalmente.




El martes, 13 de noviembre de 2012 18:46:11 UTC+1, Administrador escribió:
miniHTML.zip

Miguel Guillen

unread,
Dec 18, 2012, 6:19:29 AM12/18/12
to ix...@googlegroups.com
He utilizado EditiX, tras corregir varios errores en el dtd funciono correctamente y me valido los dos ficheros xml y dtd.

adjunto el ejercicio:


El martes, 13 de noviembre de 2012 18:46:11 UTC+1, Administrador escribió:
ixml-ejercicio1.zip
Reply all
Reply to author
Forward
0 new messages