summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSenthil Kumaran <orsenthil@gmail.com>2010-11-13 09:23:12 (GMT)
committerSenthil Kumaran <orsenthil@gmail.com>2010-11-13 09:23:12 (GMT)
commitb87dd0ce25ea2f082c5fafc4f2d5e424aabde516 (patch)
tree7882a9154b5ea0d56d864fd0071c0307db094d47
parentc8267ead691e5ded30b3ef94fa6bde40787ed9e4 (diff)
downloadcpython-b87dd0ce25ea2f082c5fafc4f2d5e424aabde516.zip
cpython-b87dd0ce25ea2f082c5fafc4f2d5e424aabde516.tar.gz
cpython-b87dd0ce25ea2f082c5fafc4f2d5e424aabde516.tar.bz2
Merged revisions 86348 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r86348 | senthil.kumaran | 2010-11-09 10:36:59 +0800 (Tue, 09 Nov 2010) | 3 lines Fix Issue10205 - XML QName error when different tags have same QName. ........
-rw-r--r--Lib/test/test_xml_etree.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
index a7ad48b..f2551d6 100644
--- a/Lib/test/test_xml_etree.py
+++ b/Lib/test/test_xml_etree.py
@@ -102,6 +102,80 @@ def interface():
'<tag key="value" />'
"""
+def qname():
+ """
+ Test QName handling.
+
+ 1) decorated tags
+
+ >>> from xml.etree import ElementTree as ET
+ >>> elem = ET.Element("{uri}tag")
+ >>> serialize(ET, elem) # 1.1
+ '<ns0:tag xmlns:ns0="uri" />'
+ >>> elem = ET.Element(ET.QName("{uri}tag"))
+ >>> serialize(ET, elem) # 1.2
+ '<ns0:tag xmlns:ns0="uri" />'
+ >>> elem = ET.Element(ET.QName("uri", "tag"))
+ >>> serialize(ET, elem) # 1.3
+ '<ns0:tag xmlns:ns0="uri" />'
+ >>> elem = ET.Element(ET.QName("uri", "tag"))
+ >>> subelem = ET.SubElement(elem, ET.QName("uri", "tag1"))
+ >>> subelem = ET.SubElement(elem, ET.QName("uri", "tag2"))
+ >>> serialize(ET, elem) # 1.4
+ '<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>'
+
+ 2) decorated attributes
+
+ >>> elem.clear()
+ >>> elem.attrib["{uri}key"] = "value"
+ >>> serialize(ET, elem) # 2.1
+ '<ns0:tag ns0:key="value" xmlns:ns0="uri" />'
+
+ >>> elem.clear()
+ >>> elem.attrib[ET.QName("{uri}key")] = "value"
+ >>> serialize(ET, elem) # 2.2
+ '<ns0:tag ns0:key="value" xmlns:ns0="uri" />'
+
+ 3) decorated values are not converted by default, but the
+ QName wrapper can be used for values
+
+ >>> elem.clear()
+ >>> elem.attrib["{uri}key"] = "{uri}value"
+ >>> serialize(ET, elem) # 3.1
+ '<ns0:tag ns0:key="{uri}value" xmlns:ns0="uri" />'
+
+ >>> elem.clear()
+ >>> elem.attrib["{uri}key"] = ET.QName("{uri}value")
+ >>> serialize(ET, elem) # 3.2
+ '<ns0:tag ns0:key="ns0:value" xmlns:ns0="uri" />'
+
+ >>> elem.clear()
+ >>> subelem = ET.Element("tag")
+ >>> subelem.attrib["{uri1}key"] = ET.QName("{uri2}value")
+ >>> elem.append(subelem)
+ >>> elem.append(subelem)
+ >>> serialize(ET, elem) # 3.3
+ '<ns0:tag xmlns:ns0="uri"><tag ns1:key="ns2:value" xmlns:ns1="uri1" xmlns:ns2="uri2" /><tag ns1:key="ns2:value" xmlns:ns1="uri1" xmlns:ns2="uri2" /></ns0:tag>'
+
+ 4) Direct QName tests
+
+ >>> str(ET.QName('ns', 'tag'))
+ '{ns}tag'
+ >>> str(ET.QName('{ns}tag'))
+ '{ns}tag'
+ >>> q1 = ET.QName('ns', 'tag')
+ >>> q2 = ET.QName('ns', 'tag')
+ >>> q1 == q2
+ True
+ >>> q2 = ET.QName('ns', 'other-tag')
+ >>> q1 == q2
+ False
+ >>> q1 == 'ns:tag'
+ False
+ >>> q1 == '{ns}tag'
+ True
+ """
+
def find():
"""
Test find methods (including xpath syntax).