<?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>