Given the increased reliance on XML in scripts and exchanging data, a number of different solutions leverage XML traversal options to get all the things done. We frequently use path to bring a file into a script or program, or accept input from STDIN. The most basic task that we then perform is simply selecting an item from that file or STDIN and then variabalizing it. One common tool that we use here is Path. XPath calls these objects nodes, and uses path expressions to select these nodes. A path expression is the path along the xml input that is followed to find a piece of data.
There are some pretty standard wildcards the can be used with xpath, where node() watches any node, * matches any element node, @* matches any attribute node, helping to constrain output.
Supported expressions include:
- node: This is a text input that identifies the name of a node to start a relative search from – for example site would select all nodes in a structure with the name site
- . Identifies the current node (kinda’ like pwd in a shell)
- .. Starts at the parent of the current node – for example,
- / Starts traversal from the root node – for example, /computer would select any nodes that falls underneath
- /computer meaning that these are absolute paths
- // Identifies the nodes in an XML structure that match a selection wherever they may be – for example
- //computer would select all nodes that contain //computer and search for other expressions below those that you may identify such as: ‘xpath //computer/general/mac_address’
- //* Selects everything
- //computer/* Selects all the child element nodes of everything that starts with computer
- @ Select an attribute in an XML structure – for example ‘xpath //computer/general/@’
-  This predicate selects the first item (or whatever number is identified, so xpath
- //computer/general/mac_address would return with the mac address of the third computer
- [@PATTERN] Constrains found sets, so ‘xpath //computer/general/[@mac_address]’ identifies all computers with an actual mac_address attribute
- //[@PATTERN=VALUE] Constrains a found set to all items where the attribute contains the value, so ‘xpath //computer/general/[@mac_address=00]’ identifies all computers with an actual mac_address attribute that has the value of 00
- //[@*] Selects only items with something in an attribute (non-null), so ‘xpath //computer/general/[@mac_address=@*] (btw, rather than use an =, you can use > or <)
- | creates compound matches. So ‘xpath //computer/general/mac_address | //computer/general/name’ would grab the mac_address and name of every computer
- [last()] Identifies the last item, so ‘xpath //computer[last()]/general/mac_address’ would return the last computer’s mac address
- [last()-2] placing a negative number after the parenthesis identifies descending orders from the end of a found set – for example, //computer[last()-2] Selects the second to last computer
Overall, as you can see xpath really makes traversing XML structures simple. Other tools and languages have their own ways, but most are similar in syntax.
krypted November 15th, 2016
Posted In: Mac OS X, Mac OS X Server, Ubuntu
languages, last, lint, tools, xml, xpath
I bet you thought this would be the article where I showed you how to make your computer curse more. Well, language can mean much more than that. In fact, Apple has dedicated a whole binary to switching your default language in OS X, in languagesetup. This command, located at /usr/sbin/languagesetup, is capable of changing the default language used by a system to a number of different languages. There are other ways to accomplish this, but none quite so easy. To get started, note that there are two ways to run languagesetup. The first is interactively, which I mostly use to figure out what I actually want to do with it. The second is using a standard command prompt, which I use for scripting.
Let’s start with the interactive. Simply run the command with no operators/verbs/whatevers:
This outputs a list of the languages that can be used in this way. Note that number 7 is Spanish.
WARNING: root access required to change system language
1) Use English for the main language
2) Utiliser le français comme langue principale
3) Deutsch als Standardsprache verwenden
7) Usar español como idioma principal
8) Usa l’italiano come lingua principale
9) Gebruik Nederlands als hoofdtaal
10) 주 언어로 한국어 사용
11) Usar português do Brasil como idioma principal
12) Usar o português europeu como idioma principal
13) Brug dansk som hovedsprog
14) Käytä pääkielenä suomea
15) Bruk norsk som hovedspråk
16) Använd svenska som huvudspråk
17) Сделать русский язык основным языком системы
18) Użyj polskiego jako języka głównego
19) Ana dil olarak Türkçe’yi kullan
20) استخدام اللغة العربية كلغة رئيسية
22) Vybrat češtinu jako hlavní jazyk
23) Magyar kiválasztása alapértelmezett nyelvként
24) Seleccioneu el català com a idioma principal
25) Odaberite hrvatski kao glavni jezik
26) Επιλέξτε Ελληνικά ως την κύρια γλώσσα
27) בחר/י עברית כשפה ראשית
28) Selectați româna ca limbă principală
29) Vybrať slovenčinu ako hlavný jazyk
30) Вибрати українську основною мовою
31) Gunakan Bahasa Indonesia sebagai bahasa utama
32) Gunakan Bahasa Melayu untuk bahasa utama
33) Sử dụng Tiếng Việt làm ngôn ngữ chính
34) Utilizar español de México como el idioma principal
At this point, you could just use the number 7 key (if we were root) and switch the default language of the system to Spanish. But, we’re going to go ahead and do that in a non-interactive fashion, using the langspec option:
sudo languagesetup -langspec 7
Or to switch it back, note that English is first:
sudo languagesetup -langspec 1
krypted November 30th, 2015
Posted In: Mac OS X, Mass Deployment
Apple, english, foreign language support, languages, localized, MAC, spanish, switch languages
Learn some stuff! For Free!
There are so many resources available for learning these days that it’s hard to keep track of it all, or to find the things that are actually worth doing. So I decided to make a list of some of my favorites:
- Duolingo.com: Learn a real language, like Spanish, Italian, German, Portuguese or French at this site, which has digestible chunks of lessons that you can use to get ready for that next work or personal trip, or just to make sure you continue to know more of a foreign language than your kid does when they come home from school.
- Learn Code the Hard Way: Free books? Learn to write Python, Ruby, C, SQL and even some regular expressions!
- Rails for Zombies: Learn Rails as a game. A nice, fresh approach to programming. You should know a little Ruby first, so check out tryruby.org or Learn Ruby the Hard Way first.
- Ted Talks: I didn’t really get these until I started to watch them. There’s over 1,600 Ted talks and counting. Want to learn about leadership, work-life balance, conducting an orchestra or how to motivate, this is your place. It’s a wealth of information from some very amazing people and what I now consider to be one of the best treasures online.
- Nike Training Club: Actually, the whole Nike experience, from Nike+ (Running, FuelBand, Kinect) to the skating app are awesome. But the Nike Training Club sports a collection of videos and workouts that are sure to push even the most fit to their limits.
- Make Games With Us: Learning programming doesn’t have to be boring. This site looks at building iPhone games.
- Stanford on iTunes: A lot of universities and other institutions have put a lot of content on iTunes U. But the quality of some of the Stanford lectures is IMHO) amongst the best! Check out what they have to offer, and search iTunes U for any other topic your heart may desire.
krypted May 20th, 2014
Posted In: Articles and Books
education, free learning, languages, learning, scripting