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

<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" encoding="ISO-8859-1"/>

<xsl:variable name="persb" select="document('../db/lfdb.persons.xml')"/>
<xsl:variable name="endb" select="document('../db/lfdb.en.xml')"/>
<xsl:variable name="nldb" select="document('../db/lfdb.nl.xml')"/>
<xsl:variable name="frdb" select="document('../db/lfdb.fr.xml')"/>

<xsl:variable name="version" select="'0.1'"/>
<xsl:variable name="stylesheetname" select="'superdb.xslt'"/>

<xsl:template match="/">

<!-- FIXME: this should be in there, too. How?
<?xml version="1.0" encoding="ISO-8859-1"?>
-->


<!-- DATABASE start -->
<database>

  <!-- ISSUES start -->
  <issues>
    <xsl:for-each select="$endb/database/issues/issue">
      <xsl:variable name="issue-id"><xsl:value-of select="@id"/></xsl:variable>
      <xsl:variable name="issue-code"><xsl:value-of select="@code"/></xsl:variable>
      <!-- ISSUE tag with id="" and code="" -->
      <issue id="{$issue-id}" code="{$issue-code}">
        <!-- TITLE in EN, mandatory -->
        <title xml:lang="en"><xsl:value-of select="title"/></title>
        <!-- TITLE in NL (if exists) -->
        <xsl:if test="$nldb/database/issues/issue[@id=$issue-id]/title[@xml:lang='nl']">
          <title xml:lang="nl"><xsl:value-of select="$nldb/database/issues/issue[@id=$issue-id]/title[@xml:lang='nl']"/></title>
        </xsl:if>
        <!-- TITLE in FR (if exists) -->
        <xsl:if test="$frdb/database/issues/issue[@id=$issue-id]/title[@xml:lang='fr']">
          <title xml:lang="fr"><xsl:value-of select="$frdb/database/issues/issue[@id=$issue-id]/title[@xml:lang='fr']"/></title>
        </xsl:if>
        <!-- FILE for EN (if exists) -->
        <xsl:if test="file">
          <file xml:lang="en"><xsl:value-of select="file"/></file>
        </xsl:if>
        <!-- FILE for NL (if exists) -->
        <xsl:if test="$nldb/database/issues/issue[@id=$issue-id]/file[@xml:lang='nl']">
          <file xml:lang="nl"><xsl:value-of select="$nldb/database/issues/issue[@id=$issue-id]/file[@xml:lang='nl']"/></file>
        </xsl:if>
        <!-- FILE for FR (if exists) -->
        <xsl:if test="$frdb/database/issues/issue[@id=$issue-id]/file[@xml:lang='fr']">
          <file xml:lang="fr"><xsl:value-of select="$frdb/database/issues/issue[@id=$issue-id]/file[@xml:lang='fr']"/></file>
        </xsl:if>
        <!-- CURRENT, if exists -->
        <xsl:if test="current">
          <current/>
        </xsl:if>
        <!-- PUBLISHED, if exists -->
        <xsl:if test="published">
          <published/>
        </xsl:if>
        <!-- ISSUE is done -->
      </issue>
    </xsl:for-each>
    <!-- ISSUES are complete -->
  </issues>

  <!-- THEMES start -->
  <themes>
    <xsl:for-each select="$endb/database/themes/theme">
      <xsl:variable name="theme-id"><xsl:value-of select="@id"/></xsl:variable>
      <!-- THEME -->
      <theme id="{$theme-id}">
        <title xml:lang="en"><xsl:value-of select="title"/></title>
        <xsl:if test="$nldb/database/themes/theme[@id=$theme-id]/title[@xml:lang='nl']">
          <title xml:lang="nl"><xsl:value-of select="$nldb/database/themes/theme[@id=$theme-id]/title[@xml:lang='nl']"/></title>
        </xsl:if>
        <xsl:if test="$frdb/database/themes/theme[@id=$theme-id]/title[@xml:lang='fr']">
          <title xml:lang="fr"><xsl:value-of select="$frdb/database/themes/theme[@id=$theme-id]/title[@xml:lang='fr']"/></title>
        </xsl:if>
        <!-- THEME is done -->
      </theme>
    </xsl:for-each>
    <!-- THEMES are complete -->
  </themes>

  <!-- PERSONS start -->
  <persons>
    <xsl:for-each select="$persb/database/persons/person">
      <xsl:variable name="pers-id"><xsl:value-of select="@id"/></xsl:variable>
      <!-- PERSON -->
      <person id="{$pers-id}">
        <name><xsl:value-of select="name"/></name>
        <email><xsl:value-of select="email"/></email>
        <xsl:if test="team">
          <team xml:lang="{team@xml:lang}"/>
        </xsl:if>
        <xsl:if test="homepage">
          <homepage><xsl:value-of select="homepage"/></homepage>
        </xsl:if>
        <xsl:if test="nickname">
          <nickname><xsl:value-of select="nickname"/></nickname>
        </xsl:if>
        <xsl:if test="desc[@xml:lang='en']">
          <desc xml:lang="en"><xsl:value-of select="desc[@xml:lang='en']"/></desc>
        </xsl:if>
        <xsl:if test="$nldb/database/persons/person[@id=$pers-id]/desc[@xml:lang='nl']">
          <desc xml:lang="nl"><xsl:value-of select="$nldb/database/persons/person[@id=$pers-id]/desc[@xml:lang='nl']"/></desc>
        </xsl:if>
        <xsl:if test="$frdb/database/persons/person[@id=$pers-id]/desc[@xml:lang='fr']">
          <desc xml:lang="fr"><xsl:value-of select="$frdb/database/persons/person[@id=$pers-id]/desc[@xml:lang='fr']"/></desc>
        </xsl:if>
        <!-- PERSON is done -->
      </person>
    </xsl:for-each>
    <!-- PERSONS are complete -->
  </persons>

<!-- FIXME: implement ARTICLE type="coverpage" and FILE type="meta" -->
  <!-- ARTICLES start -->
  <articles>
    <xsl:for-each select="$endb/database/articles/article">
      <xsl:variable name="article-id"><xsl:value-of select="@id"/></xsl:variable>
      <!-- ARTICLE with id="" and xml:lang="" -->
      <article id="{$article-id}" xml:lang="{@xml:lang}">
        <!-- TITLE in EN, mandatory -->
        <title xml:lang="en"><xsl:value-of select="title"/></title>
        <!-- TITLE in NL (if exists) -->
        <xsl:if test="$nldb/database/articles/article[@id=$article-id]/title[@xml:lang='nl']">
          <title xml:lang="nl"><xsl:value-of select="$nldb/database/articles/article[@id=$article-id]/title[@xml:lang='nl']"/></title>
        </xsl:if>
        <!-- TITLE in FR (if exists) -->
        <xsl:if test="$frdb/database/articles/article[@id=$issue-id]/title[@xml:lang='fr']">
          <title xml:lang="fr"><xsl:value-of select="$frdb/database/articles/article[@id=$article-id]/title[@xml:lang='fr']"/></title>
        </xsl:if>
        <!-- FILE for EN, if exists -->
        <xsl:if test="file">
          <file xml:lang="en"><xsl:value-of select="file"/></file>
        </xsl:if>
        <!-- FILE for NL, if it exists -->
        <xsl:if test="$nldb/database/articles/article[@id=$article-id]/file[@xml:lang='nl']">
          <file xml:lang="nl"><xsl:value-of select="$nldb/database/articles/article[@id=$article-id]/file[@xml:lang='nl']"/></file>
        </xsl:if>
        <!-- FILE for FR, if it exists -->
        <xsl:if test="$frdb/database/articles/article[@id=$article-id]/file[@xml:lang='fr']">
          <file xml:lang="fr"><xsl:value-of select="$nldb/database/articles/article[@id=$article-id]/file[@xml:lang='fr']"/></file>
        </xsl:if>
        <!-- PERSONREF to the author, not mandatory because index pages don't have one (!) -->
        <xsl:if test="personref@href">
          <personref href="{personref@href}"/>
        </xsl:if>
        <!-- ISSUEREF to the issue, mandatory -->
        <issueref href="{issueref@href}"/>
        <!-- THEMEREF to the theme, not mandatory (index pages) -->
        <xsl:if test="themeref@href">
          <themeref href="{themeref@href}"/>
        </xsl:if>
        <xsl:if test="proofread">
          <proofread>
            <personref href="{proofread/personref@href}"/>
            <xsl:if test="proofread/reserved">
              <reserved><xsl:value-of select="proofread/reserved"/></reserved>
            </xsl:if>
            <xsl:if test="proofread/finished">
              <finished><xsl:value-of select="proofread/finished"/></finished>
            </xsl:if>
          </proofread>
        </xsl:if>
        <!-- TRANSLATION to EN -->
        <xsl:if test="translation"> <!-- EN db only has translation to="en" -->
          <translation from="{translation@from}" to="en">
            <personref href="{translation/personref@href}"/>
            <xsl:if test="translation/reserved">
              <reserved><xsl:value-of select="translation/reserved"/></reserved>
            </xsl:if>
            <xsl:if test="translation/finished">
              <finished><xsl:value-of select="translation/finished"/></finished>
            </xsl:if>
            <xsl:if test="translation/proofread">
              <proofread>
                <personref href="{translation/proofread/personref@href}"/>
                <xsl:if test="translation/proofread/reserved">
                  <reserved><xsl:value-of select="translation/proofread/reserved"/></reserved>
                </xsl:if>
                <xsl:if test="translation/proofread/finished">
                  <finished><xsl:value-of select="translation/proofread/finished"/></finished>
                </xsl:if>
              </proofread>
            </xsl:if>
          </translation>
        </xsl:if>
        <!-- TRANSLATION to NL -->
        <xsl:if test="$nldb/database/articles/article/translation[@to='nl']">
          <translation from="{$nldb/database/articles/article/translation@from}" to="nl">
            <personref href="{$nldb/database/articles/article/translation/personref@href}"/>
            <xsl:if test="$nldb/database/articles/article/translation/reserved">
              <reserved><xsl:value-of select="$nldb/database/articles/article/translation/reserved"/></reserved>
            </xsl:if>
            <xsl:if test="$nldb/database/articles/article/translation/finished">
              <finished><xsl:value-of select="$nldb/database/articles/article/translation/finished"/></finished>
            </xsl:if>
            <xsl:if test="$nldb/database/articles/article/translation/proofread">
              <proofread>
                <personref href="{$nldb/database/articles/article/translation/proofread/personref@href}"/>
                <xsl:if test="$nldb/database/articles/article/translation/proofread/reserved">
                  <reserved><xsl:value-of select="$nldb/database/articles/article/translation/proofread/reserved"/></reserved>
                </xsl:if>
                <xsl:if test="$nldb/database/articles/article/translation/proofread/finished">
                  <finished><xsl:value-of select="$nldb/database/articles/article/translation/proofread/finished"/></finished>
                </xsl:if>
              </proofread>
            </xsl:if>
          </translation>
        </xsl:if>
        <!-- TRANSLATION to FR -->
        <xsl:if test="$frdb/database/articles/article/translation[@to='fr']">
          <translation from="{$frdb/database/articles/article/translation@from}" to="fr">
            <personref href="{$frdb/database/articles/article/translation/personref@href}"/>
            <xsl:if test="$frdb/database/articles/article/translation/reserved">
              <reserved><xsl:value-of select="$frdb/database/articles/article/translation/reserved"/></reserved>
            </xsl:if>
            <xsl:if test="$frdb/database/articles/article/translation/finished">
              <finished><xsl:value-of select="$frdb/database/articles/article/translation/finished"/></finished>
            </xsl:if>
            <xsl:if test="$frdb/database/articles/article/translation/proofread">
              <proofread>
                <personref href="{$frdb/database/articles/article/translation/proofread/personref@href}"/>
                <xsl:if test="$frdb/database/articles/article/translation/proofread/reserved">
                  <reserved><xsl:value-of select="$frdb/database/articles/article/translation/proofread/reserved"/></reserved>
                </xsl:if>
                <xsl:if test="$frdb/database/articles/article/translation/proofread/finished">
                  <finished><xsl:value-of select="$frdb/database/articles/article/translation/proofread/finished"/></finished>
                </xsl:if>
              </proofread>
            </xsl:if>
          </translation>
        </xsl:if>
        <!-- NOHTML, NOMETA, NOTPUBLISHED tags if they are there -->
        <xsl:if test="nothml">
          <nohtml/>
        </xsl:if>
        <xsl:if test="nometa">
          <nometa/>
        </xsl:if>
        <xsl:if test="notpublished">
          <notpublished/>
        </xsl:if>
        <!-- ABSTRACT in EN, if it exists -->
        <xsl:if test="abstract[@xml:lang='en']">
          <abstract xml:lang="en"><xsl:value-of select="abstract[@xml:lang='en']"/></abstract>
        </xsl:if>
        <!-- ABSTRACT in NL, if it exists -->
        <xsl:if test="$nldb/database/articles/article[@id=$article-id]/abstract[@xml:lang='nl']">
          <abstract xml:lang="nl"><xsl:value-of select="$nldb/database/articles/article[@id=$article-id]/abstract[@xml:lang='nl']"/></abstract>
        </xsl:if>
        <!-- ABSTRACT FR, if it exists -->
        <xsl:if test="$frdb/database/articles/article[@id=$article-id]/abstract[@xml:lang='fr']">
          <abstract xml:lang="fr"><xsl:value-of select="$frdb/database/articles/article[@id=$article-id]/abstract[@xml:lang='fr']"/></abstract>
        </xsl:if>
        <!-- ARTICLE is finished -->
    </article>
    </xsl:for-each>
    <!-- ARTICLES are done -->
  </articles>

  <!-- DATABASE is generated. ouf! -->
</database>

</xsl:template>

</xsl:stylesheet>