Hi,

Minero Aoki <aamine / cd.xdsl.ne.jp> wrote:
> > Does "xmlscan" implement XPath, and where can I get it?
> 
> http://www.blue.sky.or.jp/atelier/ruby/xmlscan-0.0.10.tar.gz

I tried to translate README into English.
It has probably some mistakes, but it is better than nothing
for non-Japanese speaker, I think.

--README----------------------------------------------------------
`xmlscan' is a collection of XML-related technology implemented Ruby.
The goal is to construct XML application with only Ruby.

It's still under construction.


xmlscan.rb:

  class XMLScanner

    Class for parsing XML document.
    It does not use any extended library, just only Ruby.

  module XMLScanner::Loose

    Mix-in which make scanner ignore any error.

  module XMLScanner::Recoverable

    Mix-in which make scanner raise ParseError and continue parsing.

  module XMLScanner::ExternalEntity

    Mix-in to parse external parsed entity.

  class LooseXMLScanner
  class RecoverableXMLScanner

    XMLScanner including {Loose|Recoverable}.

  class WellFormedXMLScanner

    XMLScanner with some well-formed contraint.

  class XMLScannerWithNamespace

    WellFormedXMLScanner with supporing XML Namespace.


htmlscan.rb:

  module XMLScanner::HTML

    Mix-in to parse HTML.

  class HTMLScanner
  class LooseHTMLScanner
  class RecoverableHTMLScanner

    XMLScanner including HTML.
    It is a little faster than html-parser/sgml-parser.rb with
    some HTML docuemnts.

                              total   total   bytes   lines     total   msec
     scanner        files      size   lines     /file   /file  seconds   /file

  at once (read):
   SGMLParser        8631  92260346 1937688   10689.4   224.5  3325.64  385.31
   LooseHTMLScanner  8631  92260346 1937688   10689.4   224.5  2247.90  260.44
   SGMLParser (max)              --      --  453969   15215         -- 54380.00
   LooseHTMLScanner (max)        --      --  453969   15215         -- 11860.00

  by line (gets):
   SGMLParser        8631  92260346 1937688   10689.4   224.5  3595.33  416.56
   LooseHTMLScanner  8631  92260346 1937688   10689.4   224.5  2867.39  332.22
   SGMLParser (max)              --      --  453969   15215         -- 20080.00
   LooseHTMLScanner (max)        --      --  453969   15215         -- 15210.00


xmltoken.rb:

  module XMLScanner::Tokenizer

    pull-based XMLScanner(?). Under construction.


xmldtd.ry:

  class XMLDTDScanner

    class for parsing DTD. You need Racc. Under construction.


xpath.ry:

  module XPath

    XPath processor for Ruby.

  class XPath::Compiler

    class for compiling XPath expression into Ruby script. you need Racc.

xpath.rb:

  racc -E -o xpath.rb xpath.ry


xpathtree.rb:

  Sample implementation of XPath data model. It's just sample.

xpath-dom.rb:

  XPath supporting DOM. It uses Adapter pattern to separate
  processing module and data structure, but it is too slow (;_;
  It might be rejected.


You can redistribute/modify it under the same term as Ruby.

-=====--===-
    UENO Katsuhiro @ BLUE-SKYNET    <katsu / blue.sky.or.jp>  -==
---=----===-                    http://www.blue.sky.or.jp/  -==
--README----------------------------------------------------------


Hope this help.


TAKAHASHI Masayoshi (maki / inac.co.jp)
# ``Whatever else you think about, think about interoperability.
#   Don't think about standards yet.'' -- Clay Shirky