Salve a tutti

Salve a tutti,
e’ la prima volta che scrivo a questa mailing list quindi mi sembrava
educato presentarmi.
Sono uno studente bolognese di informatica che si e’ innamorato di ruby
lo scorso
dicembre stavo cercando un linguaggio di scripting OO per creare uno
script che eseguisse il backup di alcuni mie progetti e la mia scelta
e’ ricaduta su Ruby. Avevo provato in precedenza a studiare Perl senza
nessun successo (sara’ il linguaggio che e’ incasinato, sara’ che la
documentazione e’ incasinata, boh!). Ma quando ho iniziato a leggere
Ruby me ne sono innamorato, e’ facile da imparare, divertente, veloce,
semplice e potente! :slight_smile:
Insomma sono soddisfatto di averlo conosciuto. Quando avro’ tempo vorrei
dedicarmi anche allo studio di Rails, appena mi libero dagli impegni
universitari!

Ok, terminate le presentazioni, vi espondo un mio dubbio: ho la
necessita’ di fare il parse e di validare (con DTD) un documento XML.
Conosco la libreria Rexml, ma non valida. Quindi mi sono diretto su
libxml e qui sorge il mio problema: nella documentazione c’e’ scritto
che per validare basta usare il metodo validate() di un oggetto
XML::Document, passandogli come argomento un oggetto di tipo XML::Dtd.
Quindi io ho scritto:

require ‘xml/libxml’

d = XML::Document.file(filename)
d.validate( XML::Dtd.new(DTD_FILE) )

dove DTD_FILE e’ una costante stringa contente il DTD. L’errore che mi
da e’:

uninitialized constant XML::Dtd (NameError)

Ho provato anche con XML::DTD, ma mi compare lo stesso errore.
Dov’e’ che sto sbagliando?

Grazie mille a tutti & ciao!

Gendag

Gendag wrote:

uninitialized constant XML::Dtd (NameError)

Ho provato anche con XML::DTD, ma mi compare lo stesso errore.
Dov’e’ che sto sbagliando?

Io ho provato a creare un Dtd in irb con il seguente codice:

require ‘rubygems’
require ‘xml/libxml’ # o anche require ‘libxml’

XML::Dtd.new(DTD_FILE)

e’ non mi ha dato nessuna eccezione.

Di solito un NameError viene fuori quando cerchi di accedere ad una
costante non definita.

libxml-ruby lo hai installato da sorgente o precompilato?

io ho provato il gem (che puoi provare con un semplice gem install :-))

L’ultima versione disponibile come gem e’ la 0.3.8

Grazie mille a tutti & ciao!

spero che in qualche modo possano esserti utile queste 2 o 3 mini-info
:slight_smile:
in bocca al lupo ed happy hacking,
rpl

On 22/06/06(Thu) 02:54, Ripley wrote:

costante non definita.

libxml-ruby lo hai installato da sorgente o precompilato?

Ho installato il pacchetto Ubuntu (libxml-ruby1.8) versione 0.3.4-4.

io ho provato il gem (che puoi provare con un semplice gem install :-))

Ho provato anche io, ho disinstllato il pacchetto .deb e ho eseguito
il comando: “gem install libxml-ruby”, ma mi da il seguente errore:

Attempting local installation of ‘libxml-ruby’
Local gem file not found: libxml-ruby*.gem
Attempting remote installation of ‘libxml-ruby’
Building native extensions. This could take a while…
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/usr/bin/ruby1.8
–with-iconv-dir
–without-iconv-dir
–with-iconv-include
–without-iconv-include=${iconv-dir}/include
–with-iconv-lib
–without-iconv-lib=${iconv-dir}/lib
–with-xml2-dir
–without-xml2-dir
–with-xml2-include
–without-xml2-include=${xml2-dir}/include
–with-xml2-lib
–without-xml2-lib=${xml2-dir}/lib
–with-zlib-dir
–without-zlib-dir
–with-zlib-include
–without-zlib-include=${zlib-dir}/include
–with-zlib-lib
–without-zlib-lib=${zlib-dir}/lib
–with-socketlib
–without-socketlib
–with-nsllib
–without-nsllib
–with-mlib
–without-mlib
–with-mlib
–without-mlib
–with-zlib
–without-zlib
ERROR: While executing gem … (RuntimeError)
ERROR: Failed to build gem native extension.
Gem files will remain installed in
/usr/lib/ruby/gems/1.8/gems/libxml-ruby-0.3.8 for inspection.
ruby extconf.rb install libxml-ruby\nchecking for socket() in
-lsocket… no
checking for gethostbyname() in -lnsl… yes
checking for atan() in -lm… no
checking for atan() in -lm… yes
checking for inflate() in -lz… no
extconf failure: need zlib

Results logged to
/usr/lib/ruby/gems/1.8/gems/libxml-ruby-0.3.8/ext/xml/gem_make.out

Inizialmente mi dava un altro errore, perche’ non avevo installato
mkmf.rb, dopo averlo installato, questo e’ l’errore che mi compare.
Dalla riga “extconf failure: need zlib” sembrerebbe che mi manchi la
zlib, cosi’ lo installata (libzlib-ruby_0.6.0+ruby1.8.2-1_all.deb), ma
l’errore rimane comunque quello :frowning:

spero che in qualche modo possano esserti utile queste 2 o 3 mini-info :slight_smile:

Si, lo sei stato :slight_smile:

in bocca al lupo ed happy hacking,
rpl

grazie mille e anche a te!

Gendag

Gendag wrote:

Inizialmente mi dava un altro errore, perche’ non avevo installato
mkmf.rb, dopo averlo installato, questo e’ l’errore che mi compare.
Dalla riga “extconf failure: need zlib” sembrerebbe che mi manchi la
zlib, cosi’ lo installata (libzlib-ruby_0.6.0+ruby1.8.2-1_all.deb), ma
l’errore rimane comunque quello :frowning:

Più che il wrapper zlib di ruby, credo ti manchi il pacchetto di
sviluppo di zlib, zlib1g-dev, prova installando quello.

Nico

On 22/06/06(Thu) 14:43, Domenico Delle S. wrote:

Più che il wrapper zlib di ruby, credo ti manchi il pacchetto di
sviluppo di zlib, zlib1g-dev, prova installando quello.

grazie mille anche a te, effettivamente mi mancavano i pacchetti
-dev di zlib e libxml2. Ora ho risolto e ho risolto anche il problema
della classe DTD.

grazie a tutti per i vostri consigli.

ciao!

Gendag

On Thu, 22 Jun 2006 19:19:23 +0200, Gendag wrote:

Ora ho risolto e ho risolto anche il problema
della classe DTD.

Deduco quindi che si riesca a validare, giusto?