PDA

Ver la versión completa : [Ayuda] (XML) archivo DTD falla y no se por qué



Molondro
04/11/2014, 13:58
Tengo un archivo XML tal que asi:



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE curs SYSTEM "UF1NF1A6_Activitats_DTD_ejercicio2.dtd">
<curs>
<alumnes>
<alumne dni="_200">
<nomalumne></nomalumne>
<cognom></cognom>
</alumne>
<alumne dni="_201">
<nomalumne></nomalumne>
<cognom></cognom>
</alumne>
<alumne dni="_202">
<nomalumne></nomalumne>
<cognom></cognom>
</alumne>
</alumnes>
<cursen>
<cursa dni="_200" codi="_1"/>
<cursa dni="_200" codi="_2"/>
<cursa dni="_200" codi="_3"/>
<cursa dni="_201" codi="_3"/>
<cursa dni="_202" codi="_1"/>
</cursen>
<ufs>
<uf codi="_1">
<nomuf></nomuf>
<hores></hores>
</uf>
<uf codi="_2">
<nomuf></nomuf>
<hores></hores>
</uf>
<uf codi="_3">
<nomuf></nomuf>
<hores></hores>
</uf>
</ufs>
</curs>


Y su DTD:



<!ELEMENT curs (alumnes,cursen,ufs)>
<!ELEMENT alumnes (alumne*)>
<!ELEMENT cursen (cursa*)>
<!ELEMENT ufs (uf*)>
<!ELEMENT alumne (nomalumne,cognom)>
<!ELEMENT cursa EMPTY>
<!ELEMENT uf (nomuf,hores)>
<!ELEMENT nomalumne (#PCDATA)>
<!ELEMENT cognom (#PCDATA)>
<!ELEMENT nomuf (#PCDATA)>
<!ELEMENT hores (#PCDATA)>


<!ATTLIST alumne dni ID #REQUIRED)> <-----------------------------
<!ATTLIST uf codi ID #REQUIRED)>
<!ATTLIST cursa dni IDREF #IMPLIED)>
<!ATTLIST cursa codi IDREF #IMPLIED)>




La validación falla por un error en el archivo DTD (la linea marcada con <------), sin embargo la declaración ATTLIST está bien formada. El error que me indica es que espera un nombre de atributo al final de dicha linea, cuando el nombre del atributo ya está indicado (dni). Llevo una hora rascándome la cabeza y no veo dónde está el fallo.

Alguien me echa un cable?

^MiSaTo^
04/11/2014, 14:06
Tengo un archivo XML tal que asi:



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE curs SYSTEM "UF1NF1A6_Activitats_DTD_ejercicio2.dtd">
<curs>
<alumnes>
<alumne dni="_200">
<nomalumne></nomalumne>
<cognom></cognom>
</alumne>
<alumne dni="_201">
<nomalumne></nomalumne>
<cognom></cognom>
</alumne>
<alumne dni="_202">
<nomalumne></nomalumne>
<cognom></cognom>
</alumne>
</alumnes>
<cursen>
<cursa dni="_200" codi="_1"/>
<cursa dni="_200" codi="_2"/>
<cursa dni="_200" codi="_3"/>
<cursa dni="_201" codi="_3"/>
<cursa dni="_202" codi="_1"/>
</cursen>
<ufs>
<uf codi="_1">
<nomuf></nomuf>
<hores></hores>
</uf>
<uf codi="_2">
<nomuf></nomuf>
<hores></hores>
</uf>
<uf codi="_3">
<nomuf></nomuf>
<hores></hores>
</uf>
</ufs>
</curs>


Y su DTD:



<!ELEMENT curs (alumnes,cursen,ufs)>
<!ELEMENT alumnes (alumne*)>
<!ELEMENT cursen (cursa*)>
<!ELEMENT ufs (uf*)>
<!ELEMENT alumne (nomalumne,cognom)>
<!ELEMENT cursa EMPTY>
<!ELEMENT uf (nomuf,hores)>
<!ELEMENT nomalumne (#PCDATA)>
<!ELEMENT cognom (#PCDATA)>
<!ELEMENT nomuf (#PCDATA)>
<!ELEMENT hores (#PCDATA)>


<!ATTLIST alumne dni ID #REQUIRED)> <-----------------------------
<!ATTLIST uf codi ID #REQUIRED)>
<!ATTLIST cursa dni IDREF #IMPLIED)>
<!ATTLIST cursa codi IDREF #IMPLIED)>




La validación falla por un error en el archivo DTD (la linea marcada con <------), sin embargo la declaración ATTLIST está bien formada. El error que me indica es que espera un nombre de atributo al final de dicha linea, cuando el nombre del atributo ya está indicado (dni). Llevo una hora rascándome la cabeza y no veo dónde está el fallo.

Alguien me echa un cable?

Te sobran los paréntesis de los ATTLIST. Te quedaría así:



<!ELEMENT curs (alumnes,cursen,ufs)>
<!ELEMENT alumnes (alumne*)>
<!ELEMENT cursen (cursa*)>
<!ELEMENT ufs (uf*)>
<!ELEMENT alumne (nomalumne,cognom)>
<!ELEMENT cursa EMPTY>
<!ELEMENT uf (nomuf,hores)>
<!ELEMENT nomalumne (#PCDATA)>
<!ELEMENT cognom (#PCDATA)>
<!ELEMENT nomuf (#PCDATA)>
<!ELEMENT hores (#PCDATA)>


<!ATTLIST alumne dni ID #REQUIRED>
<!ATTLIST uf codi ID #REQUIRED>
<!ATTLIST cursa dni IDREF #IMPLIED>
<!ATTLIST cursa codi IDREF #IMPLIED>

Molondro
04/11/2014, 14:18
Hostias que pifia, gracias misato!

y aprovecho para preguntar: algún editor de código que compruebe sintaxis a tiempo real? no me acabo de acostumbrar al teclado del portátil, y se me cuelan demasiados gazapos que luego tengo que ir revisando y corrigiendo

^MiSaTo^
04/11/2014, 14:34
Hostias que pifia, gracias misato!

y aprovecho para preguntar: algún editor de código que compruebe sintaxis a tiempo real? no me acabo de acostumbrar al teclado del portátil, y se me cuelan demasiados gazapos que luego tengo que ir revisando y corrigiendo

No te puedo recomendar porque yo uso mac :) Si tú también, entonces te recomiendo Coda. Sino mira a ver sublime Text + plugins para tema web que creo que eso si lo hay para windows tb

akualung
04/11/2014, 22:52
A mí me hablaron de un editor de código que se llama brackets, que es bastante nuevo pero se ve que tiene cosillas interesantes. Si le quieres echar un ojo a ver si cubre tus necesidades...

http://brackets.io/

IronArthur
05/11/2014, 12:39
Brackets (aunque es el que menos me gusta)
SublimeText con plugins
Atom
PhpStorm/Webstorm

Salu2

The_Punisher
05/11/2014, 13:11
Uno que pertenece a la "familia" de Webstorm y que forma parte del catálogo de software de JetBrains

https://www.jetbrains.com/idea/features/xml_editor.html

Para mí, son muy completos.

Slaudos :P

dardo
05/11/2014, 14:51
Notepad++ o vi son los únicos editores que utilizo.

otto_xd
05/11/2014, 16:25
Notepad++ o vi son los únicos editores que utilizo.

Que desperdicio existiendo sublime y emacs

-----Actualizado-----


Uno que pertenece a la "familia" de Webstorm y que forma parte del catálogo de software de JetBrains

https://www.jetbrains.com/idea/features/xml_editor.html

Para mí, son muy completos.

Slaudos :P
Hay version community.

Son muy buenos ides, caros pero yo creo que los mas completos hoy en dia.

IronArthur
07/11/2014, 09:22
Me suena q se puede conseguir el webstorm9 de gratis con email de estudiante.

Yo los uso de piratungos (web/phpstorm) junto con sublime/atom como editor sencillo.

Salu2

Molondro
07/11/2014, 09:42
Mabeis dejao deberes para el finde xD

sublime lo estuve mirando, pero no me mola que sea de pago :/

IronArthur
07/11/2014, 10:00
Mabeis dejao deberes para el finde xD

sublime lo estuve mirando, pero no me mola que sea de pago :/

Es de "pago" pq es tan de pago como el winrar. Cada x tiempo te sale una ventana de si quieres comprarlo el resto es 100% igual.

Salu2

Molondro
07/11/2014, 11:08
Es de "pago" pq es tan de pago como el winrar. Cada x tiempo te sale una ventana de si quieres comprarlo el resto es 100% igual.

Salu2

Pero... yo pagué el Winrar! aunque ahora use 7zip... :D

otto_xd
07/11/2014, 12:16
Sublime es de pago, pero compensa tener un editor multiOS con cantidad de atajos que te facilitan la vida, con sus plugins y tal. Vamos es el emacs de los mancos como yo.

Los de jetbrains me suena que tienen un IDE gratuito mantenido por la comunidad, todo es probar

IronArthur
07/11/2014, 12:46
Sublime es de pago, pero compensa tener un editor multiOS con cantidad de atajos que te facilitan la vida, con sus plugins y tal. Vamos es el emacs de los mancos como yo.

Los de jetbrains me suena que tienen un IDE gratuito mantenido por la comunidad, todo es probar

Mi problema es que como usos los dos me acostumbro a ciertas cosas q me gustan de uno y cosas de otro y me rallo cuando estoy en el otro :lol:

Me encanta el duplicar linea y el ir a definicion de funciones de *storm, me encantan los multi-cursores de sublime etc...

Salu2

otto_xd
07/11/2014, 12:52
Sublime tiene duplicar linea y selección. Control r definición. Es mas un editor que un ide

IronArthur
07/11/2014, 13:20
Sublime tiene duplicar linea y selección. Control r definición. Es mas un editor que un ide

De hecho lo uso como editor ligero ahora mismo, para desarrollar "en serio" uso el phpstorm.

Lo de duplicar linea es pq en sublime es ctrl+shift+d en vez de ctrl +d, que es multicursor. Y la definicion de funciones practicamente nunca me las coge bien sublime.

Salu2