Home > Software design >  XML and DTD: The content of the type element must match
XML and DTD: The content of the type element must match

Time:11-10

Im a Spanish Web Developer student first of all sorry my bad english but I will try my best for explain that problem.

We started the markups languagues and we need create an XML document and DTD for validating that XML.

enter image description here

This is my XML who im trying to validate

<?xml version="1.0" encoding="UTF-8"?>
<!--
Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
Click nbfs://nbhost/SystemFileSystem/Templates/XML/XMLDocument.xml to edit this template
-->

<!DOCTYPE academia SYSTEM "actividad2_dtd.dtd">

<academia>
    <matriculas>
        <matricula>
            <cod_matricula>M83928971-22</cod_matricula>
        
            <administrativo>
                <nombre_administrativo>Francisco Javier Ruiz Barrosa</nombre_administrativo>
                <dni_administrativo>62637169V</dni_administrativo>
            </administrativo>
        
            <fecha_matricula>14/09/2022</fecha_matricula>
            <importe_matricula moneda = "Euro">59,67</importe_matricula>
            <pago forma="Transferencia"/>    //Paypal, Bizum, Tarjeta, Trasnferencia
            <metodo_envio modo="Urgente"/>
            <fecha_entrega></fecha_entrega>
            <observaciones>Matricula Parcial</observaciones>   //Opcional    
        </matricula>
          
        <alumnado>
            <alumno>
                <identificacion>
                    <cod_alumno>RG8293</cod_alumno>
                    <fecha_nacimiento>05/03/1998</fecha_nacimiento>
                    <dni_alumno>53584168X</dni_alumno>       //Opcional
                </identificacion>
                <tipo_curso>completo</tipo_curso>
                <nombre_completo>
                    <nombre_alumno>Juan Pablo</nombre_alumno>
                    <primer_apellido>Sanchez</primer_apellido>
                    <segundo_apellido>Valdes</segundo_apellido>
                </nombre_completo>
                <direccion>
                    <via>Calle Trebujena</via>
                    <numero_via>14</numero_via>
                    <localidad>Chipiona</localidad>
                    <provincia>Cádiz</provincia>
                    <codigo_postal>11550</codigo_postal>
                </direccion>
       
                <telefono>
                    <movil></movil>
                    <fijo></fijo>
                </telefono>
              
                <repetidor>
                    <repite>Si</repite>
                    <numero_repeticiones>1</numero_repeticiones>
                </repetidor>
            </alumno>
        </alumnado>
    
        <cursos>
            <curso>
                <cod_curso>CAL1988-45</cod_curso>
                <idioma>Ingles</idioma>
                <nivel>A1</nivel>
                <precio moneda="Euro"></precio>
            </curso>
        </cursos>
    

    </matriculas>
    
</academia>

And this is my DTD who i make it for validate the XML document

<?xml version="1.0" encoding="UTF-8"?>
<!--
Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
Click nbfs://nbhost/SystemFileSystem/Templates/XML/emptyDTD.dtd to edit this template
-->

<!--
    TODO define vocabulary identification data
    PUBLIC ID  : -//vendor//vocabulary//EN
    SYSTEM ID  : http://server/path/__NAME__
-->

<!-- TODO define your own vocabulary/syntax. Example follows:  -->
<!ELEMENT academia (matriculas)>
<!ELEMENT matriculas (matricula, alumnado, cursos)>
<!ELEMENT matricula (cod_matricula, administrativo, fecha_matricula, importe_matricula, pago, metodo_envio, fecha_entrega, observaciones?)>
<!ELEMENT cod_matricula (#PCDATA)>
<!ELEMENT administrativo (nombre_administrativo, dni_administrativo)>
<!ELEMENT nombre_administrativo (#PCDATA)>
<!ELEMENT dni_administrativo (#PCDATA)>

<!ELEMENT fecha_matricula (#PCDATA)>
<!ELEMENT importe_matricula (#PCDATA)>
<!ATTLIST importe_matricula moneda CDATA #REQUIRED>
<!ELEMENT pago (#PCDATA)>
<!ATTLIST pago forma (Paypal|Bizum|Tarjeta|Transferencia) #REQUIRED>

<!ELEMENT metodo_envio (#PCDATA)>
<!ATTLIST metodo_envio modo CDATA #REQUIRED>

<!ELEMENT fecha_entrega (#PCDATA)>
<!ELEMENT observaciones (#PCDATA)>

<!ELEMENT alumnado (alumno)>
<!ELEMENT alumno (indentificacion, tipo_curso, nombre_completo, direccion, telefono, repetidor )>
<!ELEMENT identificacion (cod_alumno, fecha_nacimiento, dni_alumno?)>
<!ELEMENT cod_alumno (#PCDATA)>
<!ELEMENT fecha_nacimiento (#PCDATA)>
<!ELEMENT dni_alumno (#PCDATA)>

<!ELEMENT tipo_curso (#PCDATA)>

<!ELEMENT nombre_completo (nombre_alumno, primer_apellido, segundo_apellido)>
<!ELEMENT nombre_alumno (#PCDATA)>
<!ELEMENT primer_apellido (#PCDATA)>
<!ELEMENT segundo_apellido (#PCDATA)>

<!ELEMENT direccion (via, numero_via, localidad, provincia, codigo_postal)>
<!ELEMENT via (#PCDATA)>
<!ELEMENT numero_via (#PCDATA)>
<!ELEMENT localidad (#PCDATA)>
<!ELEMENT provincia (#PCDATA)>
<!ELEMENT codigo_postal (#PCDATA)>

<!ELEMENT telefono (movil,fijo?)>
<!ELEMENT movil (#PCDATA)>
<!ELEMENT fijo (#PCDATA)>

<!ELEMENT repetidor (repite,numero_repeticiones)>
<!ELEMENT repite (#PCDATA)>
<!ELEMENT numero_repeticiones (#PCDATA)>


<!ELEMENT cursos (curso)>
<!ELEMENT curso (cod_curso,idioma,nivel,precio)>
<!ELEMENT cod_curso (#PCDATA)>
<!ELEMENT idioma (#PCDATA)>
<!ELEMENT nivel (#PCDATA)>
<!ELEMENT precio (#PCDATA)>
<!ATTLIST precio moneda CDATA #REQUIRED>

So at the moment I dont know where is my fail because I see the same content in the elements "matricula" "indentificacion" and "alumno" I dont know if its because at the moment I have mental block or anything but seriusly I dont understand where is my fail.

If dont understant the code for the spanish words I could change to english if anyone need.

CodePudding user response:

  1. indentificacion misspelled in DTD. Should be identificacion
  2. On XML: //Paypal, Bizum, Tarjeta, Trasnferencia is PCDATA from XML perspective. Could be <!-- Paypal, Bizum, Tarjeta, Trasnferencia -->. Same for other //cases.
  • Related