photography

Adobe Lightroom Keyword Library for Birds

The International Ornithologist’s Union produces and regularly updates a taxonomy of world birds and recommended English names. This list is provided in several different formats, including XML. Since XML is easy to transform into different file formats, I have produced a keyword list for lightroom with all the birds of the world, by order and family. And, for those preferring a listing by family only, I generated that too. By using this list to tag photos, not only will the photo have the name of the bird, but also its scientific name, family, and order—the list by family only automatically marks the order of the family. Also included in each list are other taxonomic categories, also automatically applied, such as kingdom, phylum, class, clades, subclass, etc. These lists are free, and listed below, starting with the latest version.

Lists by order

Lists by family

To import the keyword list, unzip the file, then, in Lightroom, go to the Library Module. Then, under the Metadata menu item choose Import Keywords….

For those who are interested in generating their own lists or modifying the format of these, the following is the XSLT program used to transform from XML to Lightroom format by order. To run the program an XSLT processor is needed. Saxon-HE is free and highly recommended for this task. The following programs produce a simplified version, with name, scientific name, family, and order only.

  1. <?xml version=”1.0” encoding=”utf-8”?>
  2. <xsl:stylesheet version=”2.0” xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
  3. <xsl:output method=”text” encoding=”utf-8” omit-xml-declaration=”yes”/>
  4. <xsl:strip-space elements=”*”/>
  5. <xsl:template match=”/”>
  6. <xsl:text>[IOC World Birds by Order v</xsl:text><xsl:value-of select=”ioclist/@version”/><xsl:text> </xsl:text><xsl:value-of select=”ioclist/@year”/><xsl:text>]&#x0D;&#x0A;</xsl:text>
  7. <xsl:for-each select=”ioclist/list/order”>
  8. <xsl:text>&#9;</xsl:text><xsl:value-of select=”substring(./latin_name,1,1)”/><xsl:value-of select=”lower-case(substring(./latin_name,2))”/><xsl:text>&#x0D;&#x0A;</xsl:text>
  9. <xsl:for-each select=”family”>
  10. <xsl:text>&#9;&#9;</xsl:text><xsl:value-of select=”translate(english_name,',','')”/><xsl:text>&#x0D;&#x0A;&#9;&#9;&#9;{</xsl:text><xsl:value-of select=”latin_name”/><xsl:text>}&#x0D;&#x0A;</xsl:text>
  11. <xsl:for-each select=”genus”>
  12. <xsl:for-each select=”species”>
  13. <xsl:text>&#9;&#9;&#9;</xsl:text><xsl:value-of select=”english_name”/><xsl:text>&#x0D;&#x0A;&#9;&#9;&#9;&#9;{</xsl:text><xsl:value-of select=”../latin_name”/><xsl:text> </xsl:text><xsl:value-of select=”latin_name”/><xsl:value-of select=”translate(@extinct,'yes','†')”/><xsl:text>}&#x0D;&#x0A;</xsl:text>
  14. </xsl:for-each>
  15. </xsl:for-each>
  16. </xsl:for-each>
  17. </xsl:for-each>
  18. </xsl:template>
  19. </xsl:stylesheet>

And the following version lists birds by family, and includes the order as a synonym for each family.

  1. <?xml version=”1.0” encoding=”utf-8”?>
  2. <xsl:stylesheet version=”2.0” xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
  3. <xsl:output method=”text” encoding=”utf-8” omit-xml-declaration=”yes”/>
  4. <xsl:strip-space elements=”*”/>
  5. <xsl:template match=”/”>
  6. <xsl:text>[IOC World Birds by Family v</xsl:text><xsl:value-of select=”ioclist/@version”/><xsl:text> </xsl:text><xsl:value-of select=”ioclist/@year”/><xsl:text>]&#x0D;&#x0A;</xsl:text>
  7. <xsl:for-each select=”ioclist/list/order/family”>
  8. <xsl:text>&#9;</xsl:text><xsl:value-of select=”translate(english_name,',','')”/><xsl:text>&#x0D;&#x0A;&#9;&#9;{</xsl:text><xsl:value-of select=”latin_name”/><xsl:text>}&#x0D;&#x0A;</xsl:text>
  9. <xsl:text>&#9;&#9;{</xsl:text><xsl:value-of select=”substring(../latin_name,1,1)”/><xsl:value-of select=”lower-case(substring(../latin_name,2))”/><xsl:text>}&#x0D;&#x0A;</xsl:text>
  10. <xsl:for-each select=”genus”>
  11. <xsl:for-each select=”species”>
  12. <xsl:text>&#9;&#9;</xsl:text><xsl:value-of select=”english_name”/><xsl:text>&#x0D;&#x0A;&#9;&#9;&#9;{</xsl:text><xsl:value-of select=”../latin_name”/><xsl:text> </xsl:text><xsl:value-of select=”latin_name”/><xsl:value-of select=”translate(@extinct,'yes','†')”/><xsl:text>}&#x0D;&#x0A;</xsl:text>
  13. </xsl:for-each>
  14. </xsl:for-each>
  15. </xsl:for-each>
  16. </xsl:template>
  17. </xsl:stylesheet>

Tags: 

Subscribe to photography