Skip to content
Snippets Groups Projects
atom.xml.xslt 2.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
                    xmlns:access="http://www.bloglines.com/about/specs/fac-1.0"
                    xmlns:atom="http://www.w3.org/2005/Atom"
                    xmlns:indexing="urn:atom-extension:indexing"
                    xmlns:planet="http://planet.intertwingly.net/"
                    xmlns:xhtml="http://www.w3.org/1999/xhtml"
                    xmlns="http://www.w3.org/1999/xhtml"
    		exclude-result-prefixes="planet xhtml">
    
      <!-- strip planet elements and attributes -->
      <xsl:template match="planet:*|@planet:*"/>
    
      <!-- strip obsolete link relationships -->
      <xsl:template match="atom:link[@rel='service.edit']"/>
      <xsl:template match="atom:link[@rel='service.post']"/>
      <xsl:template match="atom:link[@rel='service.feed']"/>
    
      <!-- Feedburner detritus -->
      <xsl:template match="xhtml:div[@class='feedflare']"/>
    
      <!-- Strip site meter -->
      <xsl:template match="xhtml:div[comment()[. = ' Site Meter ']]"/>
    
      <!-- add Google/LiveJournal-esque and Bloglines noindex directive -->
      <xsl:template match="atom:feed">
        <xsl:copy>
          <xsl:attribute name="indexing:index">no</xsl:attribute>
          <xsl:apply-templates select="@*"/>
          <access:restriction relationship="deny"/>
          <xsl:apply-templates select="node()"/>
          <xsl:text>&#10;</xsl:text>
        </xsl:copy>
      </xsl:template>
    
    <!-- popular customization: add planet name to each entry title
      <xsl:template match="atom:entry/atom:title">
        <xsl:text>&#10;    </xsl:text>
        <xsl:copy>
          <xsl:apply-templates select="@*"/>
          <xsl:value-of select="../atom:source/planet:name"/>
          <xsl:text>: </xsl:text>
          <xsl:apply-templates select="node()"/>
        </xsl:copy>
      </xsl:template>
    -->
    
      <!-- indent atom elements -->
      <xsl:template match="atom:*">
        <!-- double space before atom:entries -->
        <xsl:if test="self::atom:entry">
          <xsl:text>&#10;</xsl:text>
        </xsl:if>
    
        <!-- indent start tag -->
        <xsl:text>&#10;</xsl:text>
        <xsl:for-each select="ancestor::*">
          <xsl:text>  </xsl:text>
        </xsl:for-each>
    
        <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
     
          <!-- indent end tag if there are element children -->
          <xsl:if test="*">
            <xsl:text>&#10;</xsl:text>
            <xsl:for-each select="ancestor::*">
              <xsl:text>  </xsl:text>
            </xsl:for-each>
          </xsl:if>
        </xsl:copy>
      </xsl:template>
    
      <!-- pass through everything else -->
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
      </xsl:template>
    
    </xsl:stylesheet>