paulb@1 | 1 | #!/usr/bin/env python |
paulb@1 | 2 | |
paulb@1 | 3 | import libxml2dom |
paulb@1 | 4 | import libxml2 |
paulb@5 | 5 | from xml.dom.ext import PrettyPrint |
paulb@5 | 6 | |
paulb@1 | 7 | #doc = libxml2.parseFile("XMLTools2/examples/zoo/zoo_schema.xml") |
paulb@1 | 8 | doc = libxml2.parseDoc("""<?xml version="1.0" encoding="iso-8859-15"?> |
paulb@1 | 9 | <schema xmlns="http://www.boddie.org.uk/ns/xmltools/model" |
paulb@1 | 10 | xmlns:database="http://www.boddie.org.uk/ns/xmltools/database"> |
paulb@1 | 11 | |
paulb@1 | 12 | <def-element name="cage" database:table="CAGE"/> |
paulb@1 | 13 | </schema> |
paulb@1 | 14 | """) |
paulb@1 | 15 | d = libxml2dom.Node(doc) |
paulb@1 | 16 | |
paulb@1 | 17 | # This works: |
paulb@1 | 18 | print d.childNodes[0].childNodes[1]._node.nsProp("table", 'http://www.boddie.org.uk/ns/xmltools/database') |
paulb@1 | 19 | print doc.children.children.next.nsProp("table", 'http://www.boddie.org.uk/ns/xmltools/database') |
paulb@1 | 20 | # This works only with an appropriate patch to libxml2 2.5.7: |
paulb@5 | 21 | print d.childNodes[0].childNodes[1].attributes.values()[1]._node.ns() |
paulb@1 | 22 | # Equivalent to: |
paulb@1 | 23 | print d.childNodes[0].childNodes[1]._node.properties.next.ns() |
paulb@1 | 24 | print doc.children.children.next.properties.next.ns() |