[Home] [By Thread] [By Date] [Recent Entries]

  • From: Uche Ogbuji <uche@o...>
  • To: xml-dev@l...
  • Date: Wed, 2 Feb 2011 15:34:07 -0700

There was more after the part you quoted.  I chose not to ignore that.  Sounds like Simon has a ton of options now, and can help himself, so all is well.

FWIW I do genuinely think it would be a useful service to see what it would look like in xmlsh with the attributes listing and path to element.

--Uche

On Wed, Feb 2, 2011 at 3:29 PM, David Lee <dlee@c...> wrote:

Original Requirements:

 

“I'm looking for a tool that I can feed an XML document, and it will tell

me which element names were used in the document.”

 

I’d say the 1-liner does htat

 

 

----------------------------------------

David A. Lee

dlee@c...

http://www.xmlsh.org

 

From: Uche Ogbuji [mailto:uche@o...]
Sent: Wednesday, February 02, 2011 5:27 PM
To: David Lee
Cc: xml-dev@l...


Subject: Re: element census tool?

 

That doesn't look like it includes the attributes listing, nor the path to each element, as in the original request.

 

Heck, 1-liners are easy if you simplify requirements ;)

 

import sys, amara; doc = amara.parse(sys.argv[1]); print [ e.xml_qname for e in doc.xml_select('//*')]"

 

Note: above includes the details of actually loading the file.  I suspect you might have to specify a bit more in the xmlsh example?

--Uche

 

On Wed, Feb 2, 2011 at 3:03 PM, David Lee <dlee@c...> wrote:

There’s always the XQuery approach

( example in xmlsh)

 

xquery  -q  ‘ distinct-values( //node-name(.) ) ‘

 

 

 

 

 

----------------------------------------

David A. Lee

dlee@c...

http://www.xmlsh.org

 

From: Uche Ogbuji [mailto:uche@o...]
Sent: Wednesday, February 02, 2011 4:43 PM
To: xml-dev@l...
Subject: Re: element census tool?

 

Oh what the heck.  I might as well offer a quick and dirty Amara [1] recipe.

 

import sys

 

import amara

from amara.lib.util import element_subtree_iter

from amara.xpath.util import abspath

 

doc = amara.parse(sys.argv[1])

top_prefixes = dict(doc.xml_select('*')[0].xml_namespaces)

for e in element_subtree_iter(doc):

    print abspath(e, prefixes=top_prefixes)

    attrs = dict(e.xml_attributes)

    if attrs:

        print '\t', attrs

 

 

So for example:

 

python element_census.py http://www.retards.org/library/technology/computers/programming/xml/example-xbel.xml | head

/xbel

            {(None, u'version'): u'1.0'}

/xbel/title

/xbel/folder

            {(None, u'folded'): u'yes'}

/xbel/folder[2]

            {(None, u'folded'): u'yes'}

/xbel/folder[2]/title

/xbel/folder[2]/bookmark

            {(None, u'href'): u'http://www.sciam.com/1999/0599issue/0599bosak.html'}

 

Pretty easy to tweak or format and details of report, etc.

 

In the example above I pass along a URL.  You can also pass along a file name, if you like.

 

[1] http://www.xml3k.org/Amara


--
Uche Ogbuji                       http://uche.ogbuji.net
Weblog: http://copia.ogbuji.net
Poetry ed @TNB: http://www.thenervousbreakdown.com/author/uogbuji/
Founding Partner, Zepheira        http://zepheira.com
Linked-in: http://www.linkedin.com/in/ucheogbuji
Articles: http://uche.ogbuji.net/tech/publications/
Friendfeed: http://friendfeed.com/uche
Twitter: http://twitter.com/uogbuji
http://www.google.com/profiles/uche.ogbuji




--
Uche Ogbuji                       http://uche.ogbuji.net
Weblog: http://copia.ogbuji.net
Poetry ed @TNB: http://www.thenervousbreakdown.com/author/uogbuji/
Founding Partner, Zepheira        http://zepheira.com
Linked-in: http://www.linkedin.com/in/ucheogbuji
Articles: http://uche.ogbuji.net/tech/publications/
Friendfeed: http://friendfeed.com/uche
Twitter: http://twitter.com/uogbuji
http://www.google.com/profiles/uche.ogbuji




--
Uche Ogbuji                       http://uche.ogbuji.net
Weblog: http://copia.ogbuji.net
Poetry ed @TNB: http://www.thenervousbreakdown.com/author/uogbuji/
Founding Partner, Zepheira        http://zepheira.com
Linked-in: http://www.linkedin.com/in/ucheogbuji
Articles: http://uche.ogbuji.net/tech/publications/
Friendfeed: http://friendfeed.com/uche
Twitter: http://twitter.com/uogbuji
http://www.google.com/profiles/uche.ogbuji


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member