On Tue, Jul 15, 2008 at 12:30 PM, Sean Chittenden <[EMAIL PROTECTED]> wrote:
>>> But since you went ahead with swapping XML => LibXML, that probably
>>> best anyway. I wonder about one thing though, is backward
>>> compatibility best preserved with:
>>>  XML = LibXML
>>> or as you have it:
>>>  module XML
>>>   include LibXML
>>>  end
>
> Use an environment variable at require time and the module assigns.
>
> # XX untested
> if ['0','false','no','off',false,nil,'hell god damn "no!" me
> harder'].include? (ENV['RUBY_LIBXML_SHORT_PATH'].nil? ? true :
> ENV['RUBY_LIBXML_SHORT_PATH'].downcase])
>  # Only LibXML class
> else
>  XML = LibXML
> end
>
> Then users can set the env variable and goto town however they want.
>
>> FYI, I moved to XSLT to LibXSLT to be consistent.  Although when I started
>> using it, I found it to be a bit ugly.  Take a look:
>>
>>  # Create a new XSL Transform
>>  stylesheet_doc = LibXML::Document.file('files/fuzface.xsl')
>>  stylesheet     = LibXSLT::Stylesheet.new(stylesheet_doc)
>>
>>  # Transform a xml document
>>  xml_doc = LibXML::Document.file('files/fuzface.xml')
>>  result = stylesheet.apply(xml_doc)
>>
>>
>> Notice how hard it becomes to distinguish the namespaces (LibXML and
>> LibXSLT).  Compare:
>>
>>  # Create a new XSL Transform
>>  stylesheet_doc = XML::Document.file('files/fuzface.xsl')
>>  stylesheet     = XSLT::Stylesheet.new(stylesheet_doc)
>>
>> Thoughts?
>
>
> Use of XML was actually a conscious choice on my part.  Ditch the
> puritanical or egalitarian thoughts.  Odds of two XML parsing libraries
> loaded into the same instance is rare.  I imagined there would be little to
> no contention for the XML namespace because everyone would've treated it as
> holy.  Bah!  A "User" identifier is holy, but XML is not (one is
> application, the other is library).  I think the above 'LibXML'-ification of
> the namespace is appropriate, however, but focus on making the library easy
> to use, hence XML vs LibXML.
>
> Don't step on other people's dicks intentionally, but it's okay for the
> library to be assertive and to match its ambitions.  Tip-toeing around 'what
> if' is an endless rabbit hole.  We'll adapt and find a solution if there is
> a problem at some point in the future.  Cool?

Actually I agree. XML:: and XSLT:: are a lot better. Trying to find
the right balance between ease-of-use and interoperability can be
difficult.

I think we should reconsider wrapping what we have in a LibXML
namespace. This provides for both possibilities. Usage would entail:

  require 'libxml'

  module MyApp
    include LibXML

    # Create a new XSL Transform
    stylesheet_doc = XML::Document.file('files/fuzface.xsl')
    stylesheet     = XSLT::Stylesheet.new(stylesheet_doc)
    ...
  end

See that's nice to use and proper! :-)

I think we tend to think in terms of the toplevel, but in most
applications this isn't the case.

T.
_______________________________________________
libxml-devel mailing list
libxml-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/libxml-devel

Reply via email to