>> Yeah yeah, but terminology aside, having 2 or three digits in each
>> attribute is just wrong!
>
> Terminology aside, why? The unit is "8.1" not "8" and "1". It makes no
> sense to say you're on version 8, in the given context, so why should the
> XML data pretend there is?
>
> //Magnus
Just pretend that :
- version = a tuple of integers (a, b, c, ...)
- major = (a, b)
- minor = (c, ...)
Besides, that is sortable (unlike strings where 15 < 2) :
latest minor for major :
major, max(minor) where major = what you want
<pgversion><major><int value="8" /><int value="2" /></major><minor><int
value="3" /></minor></pgversion>
from BeautifulSoup import BeautifulSoup as Soup
s = Soup("""<pgversion><major><int value="8" /><int value="2"
/></major><minor><int value="3" /></minor></pgversion>""" )
>>> v = s.find('pgversion')
>>> [int(x['value']) for x in v.find('major') ]
[8, 2]
>>> [int(x['value']) for x in v.find('minor') ]
[3]