Thanks for the response! I think I will use the custom function approach. It is fast to implement (considering I already made the XPath string!) and I don't yet understand enough Python... :P
The downside is that my script is still dependent on something that wouldn't normally be in the environment: The XMLStarlet package. I wonder... What would it take to rewrite the serialization/deserialization functions so that the output XML was better formed? Ricky aka Cron Stardust On Mon, Jan 5, 2009 at 10:05 AM, Joshua Bell <[email protected]> wrote: > Ricky wrote: > >> I'm trying to programmatically select the correct download URI from >> install.xml, and I've so far worked out this XPath expression to do so for >> the linux64 edition of glh_linear: >> >> >> "//key[text()='glh_linear']/following-sibling::map[1]/key[text()='packages']/following-sibling::map[1]/key[text()='linux64']/following-sibling::map[1]/uri/text()" >> >> This seems overly complex to me. Wouldn't it be easier to do a little >> more nesting in that file's format? The keys and maps are laid out as >> siblings when the key could simply be attribute of a map... >> > It is an XML serialization of LLSD (http://wiki.secondlife.com/wiki/LLSD). > LLSD has many different serialization formats; the XML one is > element-centric and, as you have discovered, not ideal fodder for XPath > lookups. > > I'm a big fan of XPath myself, so I feel your pain. > >> Maybe I'm just using the wrong tools? >> > One alternative would be to use the LLSD Python libraries where access > turns into data['glh_linear']['packages']['linux64'] or some such. For some > of our internal bash scripts that need to read from a basic map config file > we have a utility script that takes a LLSD map key and outputs the string > value. > > Or write a function that maps something that looks XPath-esque but is > LLSD-specific, e.g. "LLSDQueryToXPath" that takes > "glh_linear/packages/linux64" and outputs the XPath you wrote above. > > Joshua > > >
_______________________________________________ Policies and (un)subscribe information available here: http://wiki.secondlife.com/wiki/SLDev Please read the policies before posting to keep unmoderated posting privileges
