• Publicidad

Analizar XML con Schema

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Analizar XML con Schema

Notapor panterozo » 2010-02-01 14:38 @651

Estimados... estoy realizando una aplicación cliente servidor con sockets, y la comunicación se lleva a cabo mediante documentos XML... la idea es analizar este documento una vez que ha sido recibido y verificar que es el que estoy esperando que llegue...

Estuve leyendo sobre los Schema, y vi unos cuantos códigos, pero sin lograr entender cuál es el funcionamiento de estos... Me gustaría descomponer completamente el xml cuando ingrese, para ver tag por tag los nombres de las etiquetas...

Espero me puedan ayudar...
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Publicidad

Re: Analizar XML con Schema

Notapor erv-Z » 2010-02-01 16:21 @723

Podrías poner por ejemplo los códigos que has visto, porque se puede observar y mirar más o menos lo que buscas hacer, porque casi no he entendido nada, te puedo recomendar el módulo XML::RDB. Pero trata de dar más información.
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Analizar XML con Schema

Notapor salva » 2010-02-02 03:26 @185

Hay varias alternativas, yo te recomiendo esta: RelaxNG y XML::LibXML.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Analizar XML con Schema

Notapor panterozo » 2010-02-02 06:42 @321

Tengo un código con unos schemas, pero no entiendo cuál es el funcionamiento interno, o cómo comparar los códigos XML (¿esto es lo que hace no?, ¿comparar?)

Les pongo el código
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub Common::isAXML{
        my ($self, $_xml) = @_;
        my $doc;
        eval {
                my $parser      =       XML::LibXML->new();
                $doc    =       $parser->parse_string($_xml);
        };
        if (ref($@)) {
                die $@->message;
    } elsif ($@) {                                                                             
        die $@;
    }
    return $doc;                                                                               
}

sub Common::isAnEPP {
        my ($self, $_xml) = @_;
        my $doc;
        my $schema = "epp-1.0.xsd";
        my $_clTRID;
        eval {
                $doc = Common->isAXML($_xml);
                $schema = "contact-1.0.xsd" if ($_xml =~ /contact:/);
                $schema = "host-1.0.xsd" if ($_xml =~ /host:/);
                $schema = "domain-1.0.xsd" if ($_xml =~ /domain:/);
                my $xmlschema = XML::LibXML::Schema-> new( location => '/home/ignacio/schema/'.$schema );
                $xmlschema-> validate($doc);
               
        };
        return 1;
}
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4


Se le hace envío del documento en XML, y se analiza con schema, creo, pero bueno... esa es mi pregunta... ¿cómo funciona esto de schema?... ¿Por qué me recomiendan utilizar otros...??? ¿¿Son mejores que schema??
thanks ;)
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Analizar XML con Schema

Notapor explorer » 2010-02-02 06:57 @331

XML Schema sirve para describir de forma más exacta que un simple fichero XML.

La primera cuestión que hay que resolver es quién decide el formato de los ficheros XML que recibes. Si no eres tu, entonces pregúntale al diseñador que te pase el esquema de definición de esos ficheros, pues te conviene pasar los xml que recibas por el intérprete (parser) y en ese momento, validarlos.

Si eres tu el diseñador, pues te vale con tener claro qué quieres meter dentro del XML y ya está. Con un XML::Simple te vale tanto para crearlos como leerlos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Analizar XML con Schema

Notapor salva » 2010-02-02 07:10 @340

Los esquemas te permiten validar que el XML que te llega es bueno, pero no procesarlo.

Normalmente lo que tienes que hacer es:

  • convertir el XML en formato texto a un objeto $doc con parse_string
  • validar $doc con el schema (que habrás cargado previamente en memoria) llamando a su método validate
  • navegar desde $doc utilizando sus propios métodos a los nodos hijos y recursivamente a los hijos de los hijos, etc. extrayendo la información que necesites.

En cuanto a RelaxNG, en mi opinión, es bastante más sencillo de usar que el Schema del W3C y no por ello menos potente... pero si ya tienes los esquemas definidos tampoco vale la pena cambiar.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Analizar XML con Schema

Notapor panterozo » 2010-02-02 07:16 @345

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
An EPP XML instance must contain a greeting, hello, command,
                response, or extension.
       
-->

<complexType name="eppType">

<choice>
<element name="greeting" type="epp:greetingType"/>
<element name="hello"/>
<element name="command" type="epp:commandType"/>
<element name="response" type="epp:responseType"/>
<element name="extension" type="epp:extAnyType"/>
</choice>
</complexType>

<!--

                A greeting is sent by a server in response to a client connection
                or <hello>.
       
-->

<complexType name="greetingType">

<sequence>
<element name="svID" type="epp:sIDType"/>
<element name="svDate" type="dateTime"/>
<element name="svcMenu" type="epp:svcMenuType"/>
<element name="dcp" type="epp:dcpType"/>
</sequence>
</complexType>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Este es un trozo del código del schema... el problema es que no sé cómo funciona... ¿¿cómo realiza la comprobación...?? Si puedo saber esto, ¿¿¿podría crear mis propias validaciones, no...??? Este esquema de definición de los xml, son parte del protocolo EPP... Espero no ser odioso ni nada de eso... Gracias por sus respuestas ;)

Gracias por las indicaciones ;)
Última edición por explorer el 2010-02-02 07:25 @351, editado 2 veces en total
Razón: Ortografía, estilo de los códigos
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Analizar XML con Schema

Notapor explorer » 2010-02-02 07:57 @373

¡Aaaahhhh, el protocolo EPP!

Haberlo dicho antes... En CPAN tienes docenas de módulos preparados para tratar con él.

Vamos, que gracias a ellos, ni siquiera tienes que tratar con el código XML.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Analizar XML con Schema

Notapor panterozo » 2010-02-02 08:03 @377

Cierto :P...
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Analizar XML con Schema

Notapor explorer » 2010-02-02 09:06 @421

Pues este asunto me interesa... bastante. Sobre todo lo que puede servir para intercambiar información entre ISP.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados