SAX: Help on processing qualified attribute values

Discussion in 'Python' started by Markus Doering, Mar 10, 2005.

  1. Hey,

    I am trying to process XML schema documents using namespace aware SAX
    handlers. Currently I am using the default python 2.3 parser:

    parser = xml.sax.make_parser()
    parser.setFeature(xml.sax.handler.feature_namespaces, 1)


    At some point I need to parse xml attributes which contain namespace
    prefixes as their value. For example:

    <xs:element name="hello" type ="xs:string"/>

    The default SAX parser does a good job on dealing with qualified names
    as xml tags, but is there a way I can access the internal sax mapping
    between prefixes and full namespaces to be able to parse "qualified
    attribute values"? A simple private dictionary prefix2namespace would be
    sufficient.
    Or is there a way I can tell the parser to do so for me? I tried to keep
    track of namespace declarations myself with the handler, but if you use
    namespace aware parsing startElementNS() omits those declarations from
    the resulting attribute list of that method.

    Parsing the following XML bit:

    <mapping xmlns:dwc="http://www.namespacetbd.org/darwin2" />

    does not produce any attribute with startElementNS()

    def startElementNS(self, name,qname,attrs):
    print "Name:%s QName=%s, Attributes=%s"%(unicode(name),unicode(qname),
    unicode(["%s=%s"%(k,v) for k,v in attrs.items()]) )

    results in

    Name:(None, u'mapping') QName=mapping, Attributes=[]


    Should I maybe try another parser than the default one (Expat?)

    Thanks for any help,
    Markus


    --
    Markus Döring
    Botanic Garden and Botanical Museum Berlin Dahlem,
    Dept. of Biodiversity Informatics
    http://www.bgbm.org/BioDivInf/
    Markus Doering, Mar 10, 2005
    #1
    1. Advertising

  2. Markus Doering

    Uche Ogbuji Guest

    On Thu, 2005-03-10 at 15:22 +0100, Markus Doering wrote:
    > Hey,
    >
    > I am trying to process XML schema documents using namespace aware SAX
    > handlers. Currently I am using the default python 2.3 parser:
    >
    > parser = xml.sax.make_parser()
    > parser.setFeature(xml.sax.handler.feature_namespaces, 1)
    >
    >
    > At some point I need to parse xml attributes which contain namespace
    > prefixes as their value. For example:
    >
    > <xs:element name="hello" type ="xs:string"/>
    >
    > The default SAX parser does a good job on dealing with qualified names
    > as xml tags, but is there a way I can access the internal sax mapping
    > between prefixes and full namespaces to be able to parse "qualified
    > attribute values"? A simple private dictionary prefix2namespace would be
    > sufficient.


    Just for others, this was answered here:

    http://mail.python.org/pipermail/xml-sig/2005-March/010989.html

    I also provide a useful mix-in class for this purpose in Amara's
    saxtools:

    http://www.xml.com/pub/a/2005/01/19/amara.html
    http://cvs.4suite.org/viewcvs/Amara/lib/saxtools.py?rev=1.9&view=markup

    In the latter link see class namespace_mixin, which you should be
    able to copy to your code if you don't want to install Amara).


    --
    Uche Ogbuji Fourthought, Inc.
    http://uche.ogbuji.net http://4Suite.org http://fourthought.com
    Use CSS to display XML, part 2 - http://www-128.ibm.com/developerworks/edu/x-dw-x-xmlcss2-i.html
    Introducing the Amara XML Toolkit - http://www.xml.com/pub/a/2005/01/19/amara.html
    Gems from the Mines: 2002 to 2003 - http://www.xml.com/pub/a/2005/03/02/pyxml.html
    Be humble, not imperial (in design) - http://www.adtmag.com/article.asp?id=10286
    Querying WordNet as XML - http://www.ibm.com/developerworks/xml/library/x-think29.html
    Packaging XSLT lookup tables as EXSLT functions - http://www.ibm.com/developerworks/xml/library/x-tiplook2.html
    Uche Ogbuji, Mar 23, 2005
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    1
    Views:
    364
    [Si]dragon
    Apr 11, 2006
  2. David Dorward
    Replies:
    2
    Views:
    763
    Uche Ogbuji
    Feb 28, 2004
  3. Munna D
    Replies:
    0
    Views:
    286
    Munna D
    Jun 11, 2004
  4. Replies:
    3
    Views:
    1,522
    Brandon McCombs
    May 2, 2007
  5. Szabolcs Borsanyi

    Pointer to qualified poitner to qualified object

    Szabolcs Borsanyi, May 30, 2008, in forum: C Programming
    Replies:
    13
    Views:
    542
    Keith Thompson
    Jun 8, 2008
Loading...

Share This Page