# LibXML-Ruby 0.3.6

**URL:** <https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130>\
**Category:** Ruby\
**Created:** [February 23, 2006, 8:35pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130 "2006-02-23T20:35:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 23, 2006, 8:35pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/1 "2006-02-23T20:35:36Z")

</div>

LibXML-Ruby 0.3.6 is now available from Rubyforge. LibXML-Ruby is (as  
you may have guessed) a C-language Ruby binding to the Gnome LibXML2  
library, supporting a wide range of XML technologies and offering very  
competitive performance across the board.

You can obtain LibXML-Ruby via Rubygems:

```
gem install libxml-ruby

```

Or as standard tarball/zip packages:

```
http://rubyforge.org/frs/?group_id=494&release_id=4388

```

This release is essentially our ‘ground zero’ release after a recent  
effort to revive the sleeping LibXML-Ruby project with the help of  
original author Sean C… Although fixes for a number of bugs in  
the build and the code are included, no new functionality has yet been  
added. We are keen to gain feedback from the community, whether positive  
or negative, with a view to fixing the direction of the project. Our  
mailing list:

```
removed_email_address@domain.invalid

```

You can find (a bit) more information, and API documentation, at the  
project website on Rubyforge:

```
http://libxml.rubyforge.org/

```

(Please note, _not_ xml-tools as was previously the case).

For more information on the XML technologies supported by LibXML2, or  
for help obtaining or installing it, please see:

```
http://xmlsoft.org/
```

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 23, 2006, 8:48pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/2 "2006-02-23T20:48:39Z")

</div>

Will this library be renamed LibXML2-Ruby soon? The current name is  
slightly misleading.

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 23, 2006, 9:02pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/3 "2006-02-23T21:02:51Z")

</div>

On Fri, 2006-02-24 at 04:48 +0900, Mr. Big wrote:

> Will this library be renamed LibXML2-Ruby soon? The current name is  
> slightly misleading.

Yes, I have to agree. But the project was previously under the name  
‘libxml-ruby’ and we wanted to get a release out quickly, with minimal  
changes (beyond fixing things). This release should be completely  
compatible with existing code, including the “require ‘xml/libxml’”  
part.

We’re hoping to get feedback from this release and work that into the  
next minor release, 0.4.0. Maybe between now and then we can slip a name  
change in there …

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 23, 2006, 9:14pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/4 "2006-02-23T21:14:39Z")

</div>

Ross B. wrote:

> On Fri, 2006-02-24 at 04:48 +0900, Mr. Big wrote:
> 
> > Will this library be renamed LibXML2-Ruby soon? The current name is  
> > slightly misleading.
> 
> Yes, I have to agree. But the project was previously under the name  
> ‘libxml-ruby’ and we wanted to get a release out quickly, with minimal  
> changes (beyond fixing things). This release should be completely  
> compatible with existing code, including the “require ‘xml/libxml’”  
> part.
> 
> We’re hoping to get feedback from this release and work that into the  
> next minor release, 0.4.0. Maybe between now and then we can slip a name  
> change in there …

Good work! I prefer the API (and, obviously, the speed)  
over that of REXML. I do concur about the naming. Either  
make it libxml2-ruby or bump the version to 2.3.6 🙂

Thanks!

E

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 1:00pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/5 "2006-02-24T13:00:52Z")

</div>

Strange, because ZLib _is_ included in the one-click installer.

Curt

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 23, 2006, 10:31pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/6 "2006-02-23T22:31:25Z")

</div>

Tried to install it under windows and it failed because I didn’t have  
Zlib.  
This is with the ruby one click installer.

Thanks

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 2:05pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/7 "2006-02-24T14:05:57Z")

</div>

On Fri, 2006-02-24 at 21:00 +0900, Curt H. wrote:

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 4:55pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/8 "2006-02-24T16:55:53Z")

</div>

On 2/24/06, Ross B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> (Wrong button, excuse the noise)
> 
> Does it include the zlib.h header ?
> 
> If so, OP could maybe try passing --with-zlib= option to a manual  
> install, but I’m not sure yet how it could work with gems…

No, it just includes the executable. The release notes show the exact  
version, so you could download the source and extract the header.

Curt

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 2:12pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/9 "2006-02-24T14:12:06Z")

</div>

On Fri, 2006-02-24 at 22:05 +0900, Ross B. wrote:

> On Fri, 2006-02-24 at 21:00 +0900, Curt H. wrote:
> 
> > On 2/23/06, Dominic S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> > 
> > > Tried to install it under windows and it failed because I didn’t have Zlib.  
> > > This is with the ruby one click installer.  
> > > Strange, because ZLib _is_ included in the one-click installer.
> > 
> > Curt

(Wrong button, excuse the noise)

Does it include the zlib.h header ?

If so, OP could maybe try passing --with-zlib= option to a manual  
install, but I’m not sure yet how it could work with gems…

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 5:33pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/10 "2006-02-24T17:33:19Z")

</div>

On Thursday 23 February 2006 2:32 pm, Ross B. wrote:

> LibXML-Ruby 0.3.6 is now available from Rubyforge. LibXML-Ruby is (as  
> you may have guessed) a C-language Ruby binding to the Gnome LibXML2  
> library, supporting a wide range of XML technologies and offering  
> very competitive performance across the board.

Wow, this is a pretty incredible speedup!

\<meaningless:benchmark filled-with-mistakes=“true”\>  
Input doc:  
keith@devel /work/frame/templates/main $ du -h main.chap.mx && wc  
main.chap.mx  
2.2M main.chap.mx  
21063 75272 2287526 main.chap.mx

LibXML  
keith@devel /work/frame/templates/main $ time ruby -e “require  
‘rubygems’; require ‘xml/libxml’; d =  
XML::Document.file(‘main.chap.mx’); d.find(’//String’).each{|n| puts  
n}” | wc  
2090 9200 99275

real 0m0.785s  
user 0m0.728s  
sys 0m0.068s

REXML:  
time ruby -e “require ‘rexml/document’; d =  
REXML::Document.new(File.new(‘main.chap.mx’)); REXML::XPath.each(d,  
‘//String/’){|n| puts n.text}” | wc  
2090 9200 60422

real 1m41.021s  
user 1m40.710s  
sys 0m0.308s

Computer: 2 x PIII 650Mhz, 1GB RAM  
\</meaningless:benchmark\>

Nice work, folks.

Keith

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 5:39pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/11 "2006-02-24T17:39:24Z")

</div>

Great!

Could you please explain to us uninitiated the advantages (and  
disadvantages) of this over REXML?

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 6:36pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/12 "2006-02-24T18:36:32Z")

</div>

This sounds great. Thanks for producing these bindings. I am really  
glad to see this as it adds a simple interface for validating against  
an xml schema.

Sadly I’ll eventualy need to get this compiled on windows, which I’ve  
never had much luck with 😉

.adam

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 24, 2006, 8:08pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/13 "2006-02-24T20:08:41Z")

</div>

Ross B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> You can obtain LibXML-Ruby via Rubygems:
> 
> ```
> gem install libxml-ruby
> 
> ```
> 
> Or as standard tarball/zip packages:
> 
> ```
> http://rubyforge.org/frs/?group_id=494&release_id=4388
> 
> ```

looks really great, thanks for your work.

i plane to use this binding within a MacOS X application.

for me, including “libxml-ruby” is easy using stadalonift.rb from  
Jonathan Paisley, but i wonder on how to embed also the gnome libxml2  
correctly bind to ruby…

do you have some advices for that point ?

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 25, 2006, 4:15am UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/14 "2006-02-25T04:15:13Z")

</div>

On Sat, 2006-02-25 at 01:38 +0900, removed\_email\_address@domain.invalid wrote:

> Great!
> 
> Could you please explain to us uninitiated the advantages (and  
> disadvantages) of this over REXML?

I’ll try, but I have to admit I’ve never made serious use of REXML.

I think the main difference really is that REXML is implemented in Ruby,  
whereas LibXML-Ruby is a C-language binding to a native library (that  
being, somewhat confusingly I must admit, the Gnome LibXML2 library).

The main upshot of this is speed, and supported functionality - most  
(though not all) operations are faster with LibXML-Ruby than with REXML,  
mainly due to the native implementation, but partly because LibXML2 is  
itself pretty quick too. Thanks to it’s place in Gnome, LibXML2 also  
allows us to support a range of XML-related technologies that REXML  
doesn’t (as far as I’m aware?), including stable support for namespaces,  
XPointer, XInclude, catalogues, and more. Obviously full support is  
present for XPath, too (as in REXML I think).

Possibly more important than any of that depending on your usage is  
validation: LibXML2 (and by extension LibXML-Ruby) fully support DTD  
validation, and has some support for XML Schema (not exactly sure on the  
current status of this).

I won’t get into any ‘our library is better than your library’  
discussions, because it’s not about that - the two are different animals  
that happen to share a hunting ground. The reasons for choosing one or  
the other come down to a combination of your requirements in terms of  
performance, what you need to do with your XML, whether or not you can  
compile LibXML2 and extensions on your target platform, and your  
personal preference in terms of which API you prefer.

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 25, 2006, 4:30am UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/15 "2006-02-25T04:30:22Z")

</div>

On Sat, 2006-02-25 at 04:08 +0900, Une bÃ©vue wrote:

> looks really great, thanks for your work.
> 
> i plane to use this binding within a MacOS X application.
> 
> for me, including “libxml-ruby” is easy using stadalonift.rb from  
> Jonathan Paisley, but i wonder on how to embed also the gnome libxml2  
> correctly bind to ruby…
> 
> do you have some advices for that point ?

I’m afraid I can’t be much help there, I’ve no experience with OSX. I’ve  
seen standaloneify.rb but it lost me at “Takes a built RubyCocoa app  
bundle (as produced by the Xcode/ProjectBuilder template)…”

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 25, 2006, 9:44am UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/16 "2006-02-25T09:44:18Z")

</div>

Ross B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I’m afraid I can’t be much help there, I’ve no experience with OSX. I’ve  
> seen standaloneify.rb but it lost me at “Takes a built RubyCocoa app  
> bundle (as produced by the Xcode/ProjectBuilder template)…”

even not general advices ?

what i think about that :

make a try apart (in my HOME)

with a fresh ruby, libxml2 and RubyLibxml.

what i have to know is the process of binding that’s to say how your  
RubyLibxml find ruby and libxml2, probably this is done at the config  
step.

then, i can catch the right parameters to get that binding into my fresh  
HOME Ruby and Libxml2 ?

anyway i’ll ask on the RubyCocoa-talk list…

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 25, 2006, 3:56pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/17 "2006-02-25T15:56:05Z")

</div>

On Sat, 2006-02-25 at 17:43 +0900, Une bÃ©vue wrote:

> make a try apart (in my HOME)
> 
> with a fresh ruby, libxml2 and RubyLibxml.
> 
> what i have to know is the process of binding that’s to say how your  
> RubyLibxml find ruby and libxml2, probably this is done at the config  
> step.

Yes, it’s handled by ext/xml/extconf.rb . The Ruby version you build  
against is determined by the Ruby you run that script with. You can pass  
in the path to libxml in usual extconf style (–with-xml2-dir or  
–with-xml2-lib and --with-xml2-include).

You’ll need to manually run the extconf (rather than relying on the  
Rakefile) to pass in those options and then run make as usual.

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 25, 2006, 8:09pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/18 "2006-02-25T20:09:59Z")

</div>

Ross B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Yes, it’s handled by ext/xml/extconf.rb . The Ruby version you build  
> against is determined by the Ruby you run that script with. You can pass  
> in the path to libxml in usual extconf style (–with-xml2-dir or  
> –with-xml2-lib and --with-xml2-include).
> 
> You’ll need to manually run the extconf (rather than relying on the  
> Rakefile) to pass in those options and then run make as usual.

OK, fine i’ll give it a try ASAP and let you know.

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 25, 2006, 4:21am UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/19 "2006-02-25T04:21:17Z")

</div>

On Sat, 2006-02-25 at 02:33 +0900, Adam S. wrote:

> This sounds great. Thanks for producing these bindings. I am really  
> glad to see this as it adds a simple interface for validating against  
> an xml schema.
> 
> Sadly I’ll eventualy need to get this compiled on windows, which I’ve  
> never had much luck with 😉

Hopefully if you have the required libraries it will work, but I have to  
admit to not knowing much about compiling stuff on Windows…

One of the things we’re interested in with this release is getting a  
handle on cross-platform issues. There have been long-standing OSX  
issues which are hopefully now fixed, but with limited hardware/software  
for testing it’s really important that we get reports of any problems  
from OSX and Windows users.

---

<div class="post-metadata">

**Author:** ![ross\_b](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8edcca/32.png) [@ross\_b](https://www.ruby-forum.com/u/ross_b)\
**Post date:** [February 25, 2006, 11:51pm UTC](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130/20 "2006-02-25T23:51:12Z")

</div>

This is great news - does the library include bindings for libxslt as  
well?

[Next page](https://www.ruby-forum.com/t/libxml-ruby-0-3-6/54130.md?page=2)
