Please send me a documentation paragraph that I can add to .find
which  
        makes this more explicit and understandable. Hopefully this will  
        eliminate future confusion over the usage.

There is a little bit of documentation, but it's in the XPath class, which
takes a little tracking down. It doesn't help the the XPath rdocs are messed
up: the doc for .find ends up in XML::XPath::InvalidPath for reasons I
haven't been able to ferret out.

Here's a patch that tries to explain things, as applied to the XPath file.
(I haven't looked too hard into why this is getting put in the wrong place,
though I guess I could.) This could be moved in whole to the Node class if
desired or a pointer from the Node class to the XPath class.

Index: ext/libxml/ruby_xml_xpath.c
===================================================================
--- ext/libxml/ruby_xml_xpath.c (revision 242)
+++ ext/libxml/ruby_xml_xpath.c (working copy)
@@ -99,8 +99,8 @@
  * call-seq:
  *    XML::XPath.find(path, namespaces = [any]) => xpath
  * 
- * Find nodes matching the specified xpath (and optionally any of the
- * supplied namespaces) and return as an XML::Node::Set.
+ * Find nodes matching the specified xpath and return as an
+ * XML::Node::Set.
  * 
  * The optional namespaces argument may take one of
  * two forms:
@@ -109,9 +109,33 @@
  * * An array of:
  *   * strings in the form like above
  *   * arrays in the form of ['prefix','uri']
- * 
- * If not specified, matching nodes from any namespace
- * will be included.
+ *
+ * For example, to match the <p> elements in the XHTML document
+ *   <html xmlns="http://www.w3.org/1999/xhtml";>
+ *     <p />
+ *     <p />
+ *   </html>
+ * you could write
+ *   doc.find "//x:p", "x:http://www.w3.org/1999/xhtml";
+ *
+ * Two very commonly asked questions are:
+ *
+ * * How do I match nodes that use the default namespace prefix
+
+ * The example shows how to do this. Even though the default namespace
+ * prefix is used in the document, the xpath expression must
+ * explicitly identify the namespace. The only nodes that a pattern
+ * without a namespace will match are nodes that do not have a
+ * namespace, neither explicit nor from a default prefix.
+ *
+ * * How do I match particular nodes within any namespace
+ *
+ * It is possible to match all nodes with the star pattern, e.g.,
+ * <tt>//*</tt>, and it is possible to match all nodes within an
+ * individual namespace, e.g., <tt>//ns:*</tt>, but it is not possible
+ * to match individual nodes from any namespace: <tt>//*:p</tt> is
+ * invalid.
+ *
  */
 VALUE
 ruby_xml_xpath_find(VALUE class, VALUE anode, VALUE xpath_expr, VALUE
nslist) { 

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

Reply via email to