From 2baaba8a95d6edfe205a6e61acc3b428705ee1fa Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Mon, 30 Mar 2015 20:46:54 -0700 Subject: Issue #23729: Improve docs for ElementTree namespace parsing --- Doc/library/xml.etree.elementtree.rst | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Doc/library/xml.etree.elementtree.rst b/Doc/library/xml.etree.elementtree.rst index fb9772d..46396dd 100644 --- a/Doc/library/xml.etree.elementtree.rst +++ b/Doc/library/xml.etree.elementtree.rst @@ -272,8 +272,8 @@ Parsing XML with Namespaces If the XML input has `namespaces `__, tags and attributes with prefixes in the form ``prefix:sometag`` get expanded to -``{uri}tag`` where the *prefix* is replaced by the full *URI*. Also, -if there is a `default namespace +``{uri}sometag`` where the *prefix* is replaced by the full *URI*. +Also, if there is a `default namespace `__, that full URI gets prepended to all of the non-prefixed tags. @@ -299,17 +299,19 @@ prefix "fictional" and the other serving as the default namespace: One way to search and explore this XML example is to manually add the -URI to every tag or attribute in the xpath of a *find()* or *findall()*:: +URI to every tag or attribute in the xpath of a +:meth:`~Element.find` or :meth:`~Element.findall`:: - root = from_string(xml_text) + root = fromstring(xml_text) for actor in root.findall('{http://people.example.com}actor'): name = actor.find('{http://people.example.com}name') print name.text for char in actor.findall('{http://characters.example.com}character'): print ' |-->', char.text -Another way to search the namespaced XML example is to create a -dictionary with your own prefixes and use those in the search:: + +A better way to search the namespaced XML example is to create a +dictionary with your own prefixes and use those in the search functions:: ns = {'real_person': 'http://people.example.com', 'role': 'http://characters.example.com'} @@ -410,8 +412,9 @@ Supported XPath syntax | ``[tag]`` | Selects all elements that have a child named | | | ``tag``. Only immediate children are supported. | +-----------------------+------------------------------------------------------+ -| ``[tag=text]`` | Selects all elements that have a child named | -| | ``tag`` that includes the given ``text``. | +| ``[tag='text']`` | Selects all elements that have a child named | +| | ``tag`` whose complete text content, including | +| | descendants, equals the given ``text``. | +-----------------------+------------------------------------------------------+ | ``[position]`` | Selects all elements that are located at the given | | | position. The position can be either an integer | -- cgit v0.12