From c43a666ba2664d686387a8c4feb51aec868d06fe Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Mon, 30 Mar 2015 20:29:28 -0700 Subject: [PATCH] Issue #23729: Improve docs for ElementTree namespace parsing --- Doc/library/xml.etree.elementtree.rst | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Doc/library/xml.etree.elementtree.rst b/Doc/library/xml.etree.elementtree.rst index f09934bbe0..eef1b58348 100644 --- a/Doc/library/xml.etree.elementtree.rst +++ b/Doc/library/xml.etree.elementtree.rst @@ -290,8 +290,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. @@ -317,17 +317,18 @@ 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'} @@ -431,8 +432,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 | -- 2.40.0