<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output encoding="UTF-8" indent="yes" method="xml" omit-xml-declaration="yes"/>
	<xsl:output cdata-section-elements="text title linkArgs" />

	<xsl:template match="/entityset">
	  <xsl:choose>
	    <xsl:when test="@setType='Content'">
        <xsl:call-template name="content" />
	    </xsl:when>
	    <xsl:when test="@setType='Artist'">
        <xsl:call-template name="artistList" />
	    </xsl:when>
	    <xsl:when test="@setType='Video'">
        <xsl:call-template name="videoList" />
	    </xsl:when>
	    <xsl:when test="@setType='Series'">
        <xsl:call-template name="seriesList" />
	    </xsl:when>
	    <xsl:when test="@setType='Album'">
	      <xsl:call-template name="albumList" />
	    </xsl:when>
      <xsl:when test="@setType='Song'">
	      <xsl:call-template name="songList" />
	    </xsl:when>
	    <xsl:otherwise />
	  </xsl:choose>
	</xsl:template>
	
  <xsl:template name="content">
    <xsl:choose>
      <xsl:when test="count(story) > 0">
        <list type="entityset" name="{@name}" setType="{@setType}" count="{@count}" >
          <xsl:call-template name="entityMeta" />
          <xsl:for-each select="story">
            <xsl:call-template name="newsListItem" />
          </xsl:for-each>
        </list>
      </xsl:when>
      <xsl:when test="count(flipbook) > 0">
        <list type="entityset" name="{@name}" setType="{@setType}" count="{@count}" >
          <xsl:call-template name="entityMeta" />
          <xsl:for-each select="flipbook">
            <xsl:call-template name="flipbookListItem" />
          </xsl:for-each>
        </list>
      </xsl:when>
    </xsl:choose>
  </xsl:template>

  <xsl:template name="newsListItem">
    <item type="news" id="{@id}">
      <text><xsl:value-of select="headline" /></text>
      <url><xsl:value-of select="url" /></url>
      <date><xsl:value-of select="displayDate" /></date>
    </item>
  </xsl:template>
   
  <xsl:template name="flipbookListItem">
    <item type="flipbook" id="{@id}">
      <text><xsl:value-of select="title" /></text>
      <url><xsl:value-of select="url" /></url>
    </item>
  </xsl:template>

  <xsl:template name="artistList">
    <list type="entityset" name="{@name}" setType="{@setType}" count="{@count}" >
      <xsl:call-template name="entityMeta" />
      <xsl:for-each select="artist">
        <xsl:call-template name="artistListItem" />
      </xsl:for-each>
    </list>
  </xsl:template>
  
  <xsl:template name="artistListItem">
    <item type="artist" id="{@id}">
      <text><xsl:value-of select="name" /></text>
      <url><xsl:value-of select="link" /></url>
      <flipbook><xsl:value-of select="dynFlipbook" /></flipbook>
    </item>
  </xsl:template>

  <xsl:template name="videoList">
    <list type="entityset" name="{@name}" setType="{@setType}" count="{@count}" >
      <xsl:call-template name="entityMeta" />
      <xsl:for-each select="video">
        <xsl:call-template name="videoListItem" />
      </xsl:for-each>
    </list>
  </xsl:template>
  
  <xsl:template name="videoListItem">
    <item type="video" id="{@id}">
      <text><xsl:value-of select="title" /></text>
      <url><xsl:value-of select="url" /></url>
      <artist id="{artist/@id}">
        <name><xsl:value-of select="artist/name" /></name>
        <url><xsl:value-of select="artist/link" /></url>
      </artist>
    </item>
  </xsl:template>
  
  <xsl:template name="songList">
    <list type="entityset" name="{@name}" setType="{@setType}" count="{@count}" >
      <xsl:call-template name="entityMeta" />
      <xsl:for-each select="track">
        <xsl:call-template name="songListItem" />
      </xsl:for-each>
    </list>
  </xsl:template>
  
  <xsl:template name="songListItem">
    <item type="track" id="{@id}">
      <text><xsl:value-of select="title" /></text>
      <url><xsl:value-of select="lyricsUrl" /></url>
    </item>
  </xsl:template>

  <xsl:template name="seriesList">
    <list type="entityset" name="{@name}" setType="{@setType}" count="{@count}" >
      <xsl:call-template name="entityMeta" />
      <xsl:for-each select="series">
        <xsl:if test="@id != ''">
          <xsl:call-template name="seriesListItem" />
        </xsl:if>
      </xsl:for-each>
    </list>
  </xsl:template>
  
  <xsl:template name="seriesListItem">
    <item type="series" id="{@id}" channelId="{@channelId}">
      <text><xsl:value-of select="seriesName" /></text>
      <url><xsl:value-of select="url" /></url>
    </item>
  </xsl:template>
  
  <xsl:template name="entityMeta">
    <xsl:if test="title">
      <xsl:copy-of select="title" />
    </xsl:if>
    <xsl:if test="linkArgs">
      <xsl:copy-of select="linkArgs" />
    </xsl:if>
    <xsl:copy-of select="moreLink" />
  </xsl:template>

  <xsl:template name="albumList">
    <list type="entityset" name="{@name}" setType="{@setType}" count="{@count}" >
      <xsl:call-template name="entityMeta" />
      <xsl:for-each select="album">
        <xsl:if test="@id != ''">
          <xsl:call-template name="albumListItem" />
        </xsl:if>
      </xsl:for-each>
    </list>
  </xsl:template>
  
  <xsl:template name="albumListItem">
    <item type="album" id="{@id}">
      <text><xsl:value-of select="title" /></text>
      <url><xsl:value-of select="url" /></url>
    </item>
  </xsl:template>
  
</xsl:stylesheet>

