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

  <!-- ================================================================ -->
  <!-- fritekst-convert-v001.xsl -                                      -->
  <!-- Opprettet 16.08.05 - Even Halvorsen (even.halvorsen@usit.uio.no) -->
  <!-- ================================================================ -->

  <!-- ================================================================ -->
  <!-- Templater for å konvertere fritekstelementer definert med        -->
  <!-- studier.dtd til fritekst-v002.xsd.                               -->
  <!-- ================================================================ -->

  <xsl:strip-space elements="*"/>
  
  <xsl:param name="mappingfil" select="'mapping.xml'" />

 
  <!-- xsl:variable name="emne-mappingfil" select="concat($mappingbase, '/mapping-emne.xml')"/>
  <xsl:variable name="emnegruppe-mappingfil" select="concat($mappingbase, '/mapping-emnegruppe.xml')"/> 
  <xsl:variable name="studieprogram-mappingfil" select="concat($mappingbase, '/mapping-studieprogram.xml')"/> 
  <xsl:variable name="studieretning-mappingfil" select="concat($mappingbase, '/mapping-studieretning.xml')"/ --> 

  <xsl:variable name="emne-mappingfil" select="$mappingfil"/>
  <xsl:variable name="emnegruppe-mappingfil" select="$mappingfil"/>
  <xsl:variable name="studieprogram-mappingfil" select="$mappingfil"/>
  <xsl:variable name="studieretning-mappingfil" select="$mappingfil"/>
   
  <!-- template stripper vekk unødvendige tab's o.l lagt inn av xmetal -->
  <!-- underelementer av avsnitt og lister må ha space før og etter sine elementer p.g.a denne. -->
  <xsl:template match="avsnitt/text() | nummerertliste/text() | punktliste/text() | lenketekst/text() | blokk/tekst//text()">
    <xsl:variable name="uten-space" select="normalize-space(.)" />
    <xsl:variable name="slutt-tegn" select="starts-with($uten-space,'.') or starts-with($uten-space,',') or starts-with($uten-space,'!') or starts-with($uten-space,'?')"/>
    <xsl:if test="preceding-sibling::node()[1] and not($slutt-tegn)"><xsl:text> </xsl:text></xsl:if>
    <xsl:value-of select="$uten-space"/>
    <xsl:if test="following-sibling::node()[1]"><xsl:text> </xsl:text></xsl:if>
  </xsl:template>

  <xsl:template match="avsnitt">
    <avsnitt><xsl:apply-templates /></avsnitt>
  </xsl:template>

  <xsl:template match="avsnitt/liste">
    <xsl:text disable-output-escaping="yes">&lt;/avsnitt&gt;</xsl:text>
    <xsl:choose>
      <xsl:when test="@type='nummerert'">
        <nummerertliste><xsl:apply-templates /></nummerertliste>   
      </xsl:when>
      <xsl:otherwise>
        <punktliste><xsl:apply-templates /></punktliste>  
      </xsl:otherwise>
    </xsl:choose>
    <xsl:text disable-output-escaping="yes">&lt;avsnitt&gt;</xsl:text>
  </xsl:template>

  <xsl:template match="liste/listepunkt">
    <listepunkt><xsl:apply-templates /></listepunkt>
  </xsl:template>

  <xsl:template match="avsnitt/fet  | listepunkt/fet">
    <fet><xsl:value-of select="."/></fet>
  </xsl:template>

  <xsl:template match="avsnitt/kursiv | listepunkt/kursiv">
    <kursiv><xsl:value-of select="."/></kursiv>
  </xsl:template>

  <xsl:template match="avsnitt/weblenke | listepunkt/weblenke | tekst/weblenke">
    <!-- legger til http:// og bruker webadressen hvis ikke lenketekst er spesifisert -->
    <weblenke>
      <xsl:choose>
        <xsl:when test="(normalize-space(lenketekst)='')">
          <lenketekst><xsl:value-of select="normalize-space(webadresse)" /></lenketekst>
        </xsl:when>
       <xsl:otherwise>
          <lenketekst><xsl:value-of select="normalize-space(lenketekst)" /></lenketekst>
        </xsl:otherwise>
      </xsl:choose>

      <xsl:choose>
        <xsl:when test="not(contains(webadresse,'http://')) and not(contains(webadresse,'https://'))">
          <webadresse><xsl:value-of select="concat('http://', normalize-space(webadresse))" /></webadresse>
        </xsl:when>
        <xsl:otherwise>
          <webadresse><xsl:value-of select="normalize-space(webadresse)" /></webadresse>
        </xsl:otherwise>
      </xsl:choose>        
    </weblenke>
  </xsl:template>

  <xsl:template match="avsnitt/epost | listepunkt/epost">
    <weblenke>
      <lenketekst><xsl:value-of select="."/></lenketekst>
      <webadresse>mailto:<xsl:value-of select="."/></webadresse>
    </weblenke>
  </xsl:template>


  <!-- kaster referansen hvis den ikke finnes i mappinfila -->

  <xsl:template match="emnekode-referanse">
    <xsl:variable name="emne" select="document($emne-mappingfil)/mapping/emne[@emnekode=normalize-space(current())]"/>
    <xsl:choose>
      <xsl:when test="$emne">
        <referanse type="emne"><xsl:value-of select="." /></referanse>    
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="." />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template match="emnegruppekode-referanse">
    <xsl:variable name="emnegruppe" select="document($emnegruppe-mappingfil)//emnegruppe[@emnegruppekode=normalize-space(current())]" />
    <xsl:choose>
      <xsl:when test="$emnegruppe">
        <referanse type="emnegruppe"><xsl:value-of select="." /></referanse>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="." />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>


  <xsl:template match="programkode-referanse">
    <xsl:variable name="studieprogram" select="document($studieprogram-mappingfil)//studieprogram[@programkode=normalize-space(current())]"/>
    <xsl:choose>
      <xsl:when test="$studieprogram">
        <referanse type="studieprogram"><xsl:value-of select="." /></referanse>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="." />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template match="studieretningskode-referanse">
    <xsl:variable name="studieretning" select="document($studieretning-mappingfil)//studieretning[@studieretningskode=normalize-space(current())]"/>
    <xsl:choose>
      <xsl:when test="$studieretning">
        <referanse type="studieretning"><xsl:value-of select="." /></referanse>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="." />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

</xsl:stylesheet>

