Re: PyXML vs. stdlib xml.sax - SAX implementation/comparisonmatrix

"Fredrik Lundh" <[email protected]>
Newsgroups gmane.comp.python.xml
Message-ID <[email protected]>
Mike Brown wrote:

> If someone with a few hours to kill would be willing to generate some XSLT to
> render it, that would be great.

how about 20 minutes and Python ?

import elementtree.ElementTree as ET

doc = ET.parse("sax-in-python.xml")

class NS:
    def __init__(self, uri):
        self.uri = uri
    def __getattr__(self, tag):
        return self.uri + tag
    def __call__(self, path):
        return "/".join(getattr(self, tag) for tag in path.split("/"))

ns = NS("{http://pyxml.sourceforge.net/SAX-support-matrix/2005/11}")

# get implementation map
implementations = {}
for family in doc.findall(ns("implementations/package-family")):
    for set in family.findall(ns("package-set")):
        for item in set:
            implementations[item.text] = family.get("name"), set.get("name")

def line(indent, *args):
    print "<tr>",
    if len(args) == 1:
        print "<td colspan=3>",
    else:
        print "<td>",
    print "&nbsp;&nbsp;"*indent, "</td><td>".join(args), "</td>",
    print "</tr>"

print """\
<html>
  <head>
    <title>SAX support in Python</title>
    <style type="text/css">
      th { text-align: left }
      th, td { background-color: #EEE; color: 000; }
      body { font-family: sans-serif }
    </style>
  </head>
  <body lang="en">
  <h2>SAX support in Python</h2>
"""

# process technology grid
print "<table>"
for technology in doc.findall(ns.technology):
    line(0, technology.get("name").capitalize())
    thisgroup = None
    for group in technology:
        if group.tag != thisgroup:
            line(1, group.tag.split("}")[1].capitalize())
            thisgroup = group.tag
        line(2, group.get("type").capitalize())
        for item in group:
            name = item.get("name")
            implementation = item.findtext(ns.implementation)
            lib = implementations.get(implementation, ("", ""))
            line(3, name, lib[0], implementation)
print "</table>"

print """\
  </body>
</html>
"""

tweak as necessary.

</F> 



_______________________________________________
XML-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/xml-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.