XSLT, mis teeb valmis meie XML-i kasutades koordinaatide XML-i ja EMHI reaalaja XML-i

From ICO wiki
Jump to navigationJump to search
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <!-- XML dokumendid muutujatena-->
    <xsl:variable name="emhi" select="document('http://www.emhi.ee/ilma_andmed/xml/observations.php')"/>
    <xsl:variable name="gps" select="document('jaamad_koordinaadid.xml')"/>
    <!-- andmete lugemise aeg-->
    <jaamad>
      <xsl:attribute name="aeg">
        <xsl:value-of select="$emhi//@timestamp"/>
      </xsl:attribute>
      <xsl:for-each select="$emhi//station">
        <!-- teeme muutuja, mis jätab meelde jaama nime -->
        <xsl:variable name="jnimi" select="name"></xsl:variable>
        <jaam>
          <!-- jaamale külge kood atribuudina-->
          <xsl:attribute name="wmocode">
            <xsl:value-of select="wmocode"/>
          </xsl:attribute>
          <nimi>
            <xsl:value-of select="name"/>
          </nimi>
          <asukoht>
            <laius>
              <xsl:attribute name="kraad">
                <xsl:value-of select="number($gps//jaam[contains(nimi,$jnimi)]/asukoht/laius/kraad)"/>
              </xsl:attribute>
              <xsl:attribute name="minut">
                <xsl:value-of select="number($gps//jaam[contains(nimi,$jnimi)]/asukoht/laius/minut)"/>
              </xsl:attribute>
              <xsl:attribute name="sekund">
                <xsl:value-of select="number($gps//jaam[contains(nimi,$jnimi)]/asukoht/laius/sekund)"/>
              </xsl:attribute>
            </laius>
            <pikkus>
              <xsl:attribute name="kraad">
                <xsl:value-of select="number($gps//jaam[contains(nimi,$jnimi)]/asukoht/pikkus/kraad)"/>
              </xsl:attribute>
              <xsl:attribute name="minut">
                <xsl:value-of select="number($gps//jaam[contains(nimi,$jnimi)]/asukoht/pikkus/minut)"/>
              </xsl:attribute>
              <xsl:attribute name="sekund">
                <xsl:value-of select="number($gps//jaam[contains(nimi,$jnimi)]/asukoht/pikkus/sekund)"/>
              </xsl:attribute>
            </pikkus>
          </asukoht>
          <ilm>
            <temperatuur>
              <xsl:value-of select="number(airtemperature)"/>
            </temperatuur>
            <niiskus>
              <xsl:value-of select="number(relativehumidity)" />
            </niiskus>
            <tuulekiirus>
              <xsl:value-of select="number(windspeed)"/>
            </tuulekiirus>
            <maxtuulekiirus>
              <xsl:value-of select="number(windspeedmax)"/>
            </maxtuulekiirus>
          </ilm>
        </jaam>
      </xsl:for-each>
    </jaamad>
  </xsl:template>
</xsl:stylesheet>