HEMLをtimelineに変換するXSL

歴史年表のデータベースについて調べていたら、HEMLプロジェクトというのがあるのを知った。

http://heml.mta.ca/heml-cocoon/

HEMLをtimelineに変換するXSLを書いてみた。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:heml="http://www.heml.org/schemas/2003-09-17/heml"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xlink="http://www.w3.org/1999/xlink" 
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 exclude-result-prefixes="heml dc geo xsi xlink rdf"
>

  <xsl:output method="xml" indent="yes" encoding="UTF-8"
    omit-xml-declaration="yes"/>

  <xsl:template match="/heml:Heml">
    <data>
    <xsl:apply-templates select="heml:Events"/>
    </data>
  </xsl:template>

  <xsl:template match="heml:Events">
    <xsl:for-each select="heml:Event">
      <event>
          <xsl:attribute name="start">
            <xsl:value-of select=".//heml:StartingDate/heml:Year"/>
          </xsl:attribute>
          <xsl:attribute name="end">
            <xsl:value-of select=".//heml:EndingDate/heml:Year"/>
          </xsl:attribute>
          <xsl:attribute name="title">
            <xsl:value-of select="./heml:EventLabelSet/heml:Label[@xml:lang='ja']"/>
          </xsl:attribute>
          <xsl:attribute name="link">
            <xsl:value-of select=".//heml:SimpleLink/@xlink:href"/>
          </xsl:attribute>      
          <xsl:value-of select=".//heml:Comment"/>
      </event>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>