Example #1
0
 def test_root(self):
     doc = xml.dom.minidom.parseString("""
         <doc><a><b><context /></b></a></doc>
     """).documentElement
     node = xpath.findnode('//context', doc)
     result = xpath.find('/', node)
     self.failUnlessEqual([x.nodeType for x in result],
                          [xml.dom.Node.DOCUMENT_NODE])
Example #2
0
 def test_self(self):
     doc = xml.dom.minidom.parseString("""
         <doc>
             <para />
         </doc>
     """).documentElement
     para_node = xpath.findnode('para', doc)
     self.failUnlessEqual(len(xpath.find('self::para', doc)), 0)
     self.failUnlessEqual(len(xpath.find('self::para', para_node)), 1)
Example #3
0
 def test_root_descendant(self):
     doc = xml.dom.minidom.parseString("""
         <doc>
             <para id="1"><context /></para>
             <para id="2" />
         </doc>
     """).documentElement
     node = xpath.findnode('//context', doc)
     result = xpath.find('/descendant::para', node)
     self.failUnlessEqual([x.getAttribute("id") for x in result],
                          ["1", "2"])
Example #4
0
 def test_previous_sibling(self):
     doc = xml.dom.minidom.parseString("""
         <doc>
             <chapter id="1" /><chapter id="2" />
             <context />
             <chapter id="3" /><chapter id="4" />
         </doc>
     """).documentElement
     node = xpath.findnode('//context', doc)
     result = xpath.find('preceding-sibling::chapter[position()=1]', node)
     self.failUnlessEqual([x.getAttribute("id") for x in result],
                          ["2"])
 def test_parent_attr(self):
     doc = xml.dom.minidom.parseString("""
         <doc id="0">
             <chapter id="1" lang="en">
                 <item id="2" />
                 <item id="3"><subitem id="4" /></item>
             </chapter>
         </doc>
     """).documentElement
     node = xpath.findnode('//item[@id="3"]', doc)
     result = xpath.find('../@lang', node)
     self.failUnlessEqual([x.value for x in result],
                          ["en"])
 def test_parent(self):
     doc = xml.dom.minidom.parseString("""
         <doc id="0">
             <chapter id="1">
                 <item id="2" />
                 <item id="3"><subitem id="4" /></item>
             </chapter>
         </doc>
     """).documentElement
     node = xpath.findnode('//item[@id="3"]', doc)
     result = xpath.find('..', node)
     self.failUnlessEqual([x.getAttribute("id") for x in result],
                          ["1"])
 def test_relative_descendant_or_self(self):
     doc = xml.dom.minidom.parseString("""
         <para id="0">
             <div id="1" />
             <para id="2">
                 <para id="3" />
             </para>
         </para>
     """).documentElement
     node = xpath.findnode('//para[@id="2"]', doc)
     result = xpath.find('.//para', node)
     self.failUnlessEqual([x.getAttribute("id") for x in result],
                          ["3"])
Example #8
0
 def test_ancestor_or_self(self):
     doc = xml.dom.minidom.parseString("""
         <doc>
             <div id="1">
                 <div id="2" />
                 <div id="3" />
             </div>
             <div id="4" />
         </doc>
     """).documentElement
     node = xpath.findnode('//div[@id="3"]', doc)
     result = xpath.find('ancestor-or-self::div', node)
     self.failUnlessEqual([x.getAttribute("id") for x in result],
                          ["1", "3"])
Example #9
0
 def test_olist_item(self):
     doc = xml.dom.minidom.parseString("""
         <doc>
             <item id="1">
                 <context />
                 <olist><item id="2" /></olist>
             </item>
             <olist><item id="3" /></olist>
         </doc>
     """).documentElement
     node = xpath.findnode('//context', doc)
     result = xpath.find('/descendant::olist/child::item', node)
     self.failUnlessEqual([x.getAttribute("id") for x in result],
                          ["2", "3"])
Example #10
0
    def test_partition(self):
        """Test that the ancestor, descendant, following, preceding, and
        self axes partition the document.

        """
        a = xpath.find('//*', self.doc)
        a.sort()

        b = []
        node = xpath.findnode('//*[@id="2.2"]', self.doc)
        for axis in ('ancestor','descendant','following','preceding','self'):
            b.extend(xpath.find('%s::*' % axis, node))
        b.sort()

        self.failUnlessEqual(a, b)