Generación de XML Schema (XSD) y DTD a partir de documentos XML

1
67335

Generación de XML Schema (XSD) y DTD a partir de documentos XML

En el siguiente tutorial, vamos a presentar de una forma rápida una herramienta java que desde mi punto de vista me parece muy interesante.
Dicha herramienta se llama Trang y consiste en un simple jar con el que podemos a través de línea de comandos
generar XML Schema (XSD) o DTD a partir de un documento XML. Ahorrándonos así un valioso esfuerzo :-).

Otra cosa que permite esta herramienta es convertir un XSD en un DTD y viceversa.

Aquí tienes la página de Trang: Descargar Trang.

Nota: Existen web como http://www.hitsw.com/xml_utilites/ que hacen lo mismo de forma OnLine, pero mi opinión es que Trang afina más y mejor.

A continuación, vamos a realizar un ejemplo de como realizar las tareas anteriormente expuestas:

XML a partir del cual generaremos el XMLSchema y el DTD: persona.xml



    111111111
    Pepito Bombillo Serrano
    Soltero
    
        Autentia
        http://www.autentia.com
        +34916753306
    

Jugando un poco con la aplicación: Generando XSD y DTD.

    
rem "Generamos un XML Schema que valide el documento"
c:\java\jdk1.6.0_11\bin\java -jar trang.jar persona.xml persona.xsd

rem "Generamos un DTD que valide el documento"
c:\java\jdk1.6.0_11\bin\java -jar trang.jar persona.xml persona.dtd

rem "Generamos un DTD a partir de un XML Schema"
c:\java\jdk1.6.0_11\bin\java -jar trang.jar persona.xsd persona2.dtd

rem "Generamos un XML Schema a partir de un DTD"
c:\java\jdk1.6.0_11\bin\java -jar trang.jar persona.dtd persona2.xsd

XMLSchema generado: persona.xsd



  
    
      
        
        
        
        
      
    
  
  
  
  
    
      
        
        
        
      
    
  
  
  
  

Pero claro, no es oro todo lo que reluce, siempre hay que hacer algún retoque. Por ejemplo en la línea 15 vemos que el campo estado civil lo ha generado de tipo
NC:name, cuando seguramente querramos una restricción de valores: soltero, casado, …

No está de más aprender a crear esquemas XML a manita. En el siguiente enlace tienes un tutorial que te enseña a realizarlo a través de algunos ejemplos, eso sí, no es un libro, así que se confia un poco en la intuición del lector (A buen entendedor pocas palabras bastan).
Aprendiendo XMLSchema a través de ejemplos.

DTD generado: persona.dtd


<!ATTLIST persona
  xmlns CDATA #FIXED 'http://www.adictosaltrabajo.com'>

<!ELEMENT dni (#PCDATA)>
<!ATTLIST dni
  xmlns CDATA #FIXED 'http://www.adictosaltrabajo.com'>

<!ELEMENT estadoCivil (#PCDATA)>
<!ATTLIST estadoCivil
  xmlns CDATA #FIXED 'http://www.adictosaltrabajo.com'>

<!ELEMENT company (name,url,telefono)>
<!ATTLIST company
  xmlns CDATA #FIXED 'http://www.adictosaltrabajo.com'>

<!ELEMENT url (#PCDATA)>
<!ATTLIST url
  xmlns CDATA #FIXED 'http://www.adictosaltrabajo.com'>

<!ELEMENT telefono (#PCDATA)>
<!ATTLIST telefono
  xmlns CDATA #FIXED 'http://www.adictosaltrabajo.com'>

<!ELEMENT name (#PCDATA)>
<!ATTLIST name
  xmlns CDATA #FIXED 'http://www.adictosaltrabajo.com'>

Referencias

  • http://www.thaiopensource.com/relaxng/trang-manual.html
  • http://www.thaiopensource.com/relaxng/trang.html

Conclusiones

Desde mi punto de vista aunque existan este tipo de herramientas, es muy importante aprender a realizar esquemas a manita, pues muchas otras tecnologías dependen directamente de este conocimiento, por ejemplo los WSDL que definen los servicios web.

Los XSD son un estándar para estructurar y validar información, ¿qué hay más importante que la información en una aplicación?.

Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.

cgpcosmad@gmail.com

1 COMENTARIO

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad