From 4a166804290924b07067433e4d2b88723bb3567f Mon Sep 17 00:00:00 2001 From: Davide Brunato Date: Sat, 30 Mar 2024 18:18:41 +0100 Subject: [PATCH] Fix code blocks in README.rst --- README.rst | 72 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/README.rst b/README.rst index 7b304ad..c13ee17 100644 --- a/README.rst +++ b/README.rst @@ -34,11 +34,13 @@ You can install the package with *pip* in a Python 3.8+ environment:: For using it import the package and apply the selectors on ElementTree nodes: ->>> import elementpath ->>> from xml.etree import ElementTree ->>> root = ElementTree.XML('') ->>> elementpath.select(root, '/A/B2/*') -[, , ] +.. code-block:: pycon + + >>> import elementpath + >>> from xml.etree import ElementTree + >>> root = ElementTree.XML('') + >>> elementpath.select(root, '/A/B2/*') + [, , ] The *select* API provides the standard XPath result format that is a list or an elementary datatype's value. If you want only to iterate over results you can use the generator function @@ -47,52 +49,62 @@ datatype's value. If you want only to iterate over results you can use the gener The selectors API works also using XML data trees based on the `lxml.etree `_ library: ->>> import elementpath ->>> import lxml.etree as etree ->>> root = etree.XML('') ->>> elementpath.select(root, '/A/B2/*') -[, , ] +.. code-block:: pycon + + >>> import elementpath + >>> import lxml.etree as etree + >>> root = etree.XML('') + >>> elementpath.select(root, '/A/B2/*') + [, , ] When you need to apply the same XPath expression to several XML data you can also use the *Selector* class, creating an instance and then using it to apply the path on distinct XML data: ->>> import elementpath ->>> import lxml.etree as etree ->>> selector = elementpath.Selector('/A/*/*') ->>> root = etree.XML('') ->>> selector.select(root) -[, , ] ->>> root = etree.XML('') ->>> selector.select(root) -[, , , ] +.. code-block:: pycon + + >>> import elementpath + >>> import lxml.etree as etree + >>> selector = elementpath.Selector('/A/*/*') + >>> root = etree.XML('') + >>> selector.select(root) + [, , ] + >>> root = etree.XML('') + >>> selector.select(root) + [, , , ] Public API classes and functions are described into the `elementpath manual on the "Read the Docs" site `_. For default the XPath 2.0 is used. If you need XPath 1.0 parser provide the *parser* argument: ->>> from elementpath import select, XPath1Parser ->>> from xml.etree import ElementTree ->>> root = ElementTree.XML('') ->>> select(root, '/A/B2/*', parser=XPath1Parser) -[, , ] +.. code-block:: pycon + + >>> from elementpath import select, XPath1Parser + >>> from xml.etree import ElementTree + >>> root = ElementTree.XML('') + >>> select(root, '/A/B2/*', parser=XPath1Parser) + [, , ] For XPath 3.0/3.1 import the parser from *elementpath.xpath3* subpackage, that is not loaded for default: ->>> from elementpath.xpath3 import XPath3Parser ->>> select(root, 'math:atan(1.0e0)', parser=XPath3Parser) -0.7853981633974483 +.. code-block:: pycon + + >>> from elementpath.xpath3 import XPath3Parser + >>> select(root, 'math:atan(1.0e0)', parser=XPath3Parser) + 0.7853981633974483 Note: *XPath3Parser* is an alias of *XPath31Parser*. If you need only XPath 3.0 you can also use a more specific subpackage, avoiding the loading of XPath 3.1 implementation: ->>> from elementpath.xpath30 import XPath30Parser ->>> select(root, 'math:atan(1.0e0)', parser=XPath30Parser) -0.7853981633974483 +.. code-block:: pycon + + >>> from elementpath.xpath30 import XPath30Parser + >>> select(root, 'math:atan(1.0e0)', parser=XPath30Parser) + 0.7853981633974483 Contributing